1.概述
    正则表达式是一个描述字符模式的对象。Javascript的正则表达式语法的是Perl5的正则表达式的子集。JS正则表达式有两种使用方式,文本模式和RegExp对象模式,实例如下:

var patern = /java/ig;    //文本模式
var patern = new RegExp(/java/, 'ig'); //对象模式

  注:ES3中RegExp共用一个对象,ES5每次调用产生一个新对象

2.正则表达式使用的主要字符和元字符
    2.1直接量字符
字符
匹配
字母和数字
自身
\o
NUL字符(\u0000)
\t
制表符(\u0009)
\n
换行符(\u000A)
\v
垂直制表符(\u000B)
\f
换页符(\u000C)
\r
回车符(\u000D)
\xnn
十六进制数,nn指拉丁字符
\uxxxxx
十六进制数,xxxx指unicode字符
\cX
控制字符^X

2.2字符类

字符
匹配
[...]
方括号内的任意字符
[^...]
除方括号外的任意字符
.
除换行符和其他unicode行终止符外的任意字符
\w
任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W
非ASCII字符组成的单词,等价于[^a-zA-Z0-9]
\s
任何unicode空白符
\S
任何非unicode空白符
\d
任何ASCII数字,等价于[0-9]
\D
非ASCII数字,等价于[^0-9]
[\b]
退格直接量

2.3重复

字符
含义
{n,m}
匹配前一项,至少n次,不超过m次,[n,m)
{n,}
匹配前一项,至少n次或者更多次,[n,无穷)
{n}
匹配前一项n次,==n
?
匹配前一项,0到1次,0||1
+
匹配前一项,1到多次,[1,无穷)
*
匹配前一项,0次到多次,[0,无穷)

备注:非贪婪的重复,只需要在重复后面加一个?即可,目标是尽可能少的匹配。
    2.4选择、分组和引用字符

字符
含义
|
选择,匹配左边或者右边的表达式
(...)
分组,可使用重复符进行修饰(记忆)
(?:...)
只组合,不记忆
\n
和第n组,第一次匹配的字符相匹配

2.5指定匹配位置,即锚字符

字符 含义
^
匹配字符串的开头
$
匹配字符串的结尾
\b
匹配单词的边界符
\B
匹配单词非边界符
(?=p)
正向先行断言,都与p匹配但不包含
(?!p)
负向先行断言,都与p不匹配

2.6修饰符

字符
含义
i
不区分大小写
m
多行匹配模式
g
全局匹配

3.用于模式匹配的方法,包含String和RegExp对象

    3.1String提供了四种支持正则表达式的方法
方法名称
使用说明
String.search(patern)
返回第一个与之匹配的子串起始位置,如果找不到就返回-1
String.replace(patern, newStr)
将匹配的字符串替换成newStr,newStr也可以是动态替换字符串的函数
String.match(patern)
返回一个有匹配结果组成的数组,如果非全局匹配,第一个是匹配的字符串,后面为分组值
String.split(partern)
根据规则分割成数组

3.2RegExp提供两个方法

方法名称
使用说明
RegExp.exec(string)
和String的match方法返回值相同,RegExp.lastIndex是全局匹配的下一个匹配项的起始位置
RegExp.test(string)
当exec不为null时,返回true
4.正则表达式简单使用实例
匹配中文字符: [\u4e00-\u9fa5]
匹配首尾空格:(^\s*)|(\s*$)
//获取URL参数
var url = "http://www.cnblogs.com?func=window.getUserName&errno=0";
var splitUrlReg = /\?(\w+)=([^&=]*)(?:&(\w+)=([^&=]*))+/;;
var paramArr = url.match(splitUrlReg);
console.log(paramArr);
//["?func=window.getUserName&errno=0", "func", "window.getUserName", "errno", "0", index: 22, input: "http://www.cnblogs.com?func=window.getUserName&errno=0", clone: function]

  

  

 

初探JS正则表达式的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. 从273二手车的M站点初探js模块化编程

    前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...

  3. 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式

    1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet'  href='bootstrap-3.3.0-dist/dist/css ...

  4. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  5. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  6. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

  7. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  8. JS正则表达式验证账号、手机号、电话和邮箱

    JS正则表达式验证账号.手机号.电话和邮箱 效果体验:http://keleyi.com/keleyi/phtml/jstexiao/15.htm 验证帐号是否合法 验证规则:字母.数字.下划线组成, ...

  9. 初识JS正则表达式

    初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...

随机推荐

  1. css中的列表样式

    在网页设计中,我们经常将某些具有相似功能的标签放在同一组中,这时我们经常会用到列表标签(无序列表ul,有序列表ol),在列表标签中对列表样式的设计可以使我们的页面得到一定程度的美化. 在css中对列表 ...

  2. ThinkPHP3.2.3中三大自动中的缺陷问题

    我们在使用Thinkphp3.2.3框架时在对数据表进行模型化后就可以使用自动完成功能. 自动完成可以帮助我们更简便的完成对表单内容对数据表(集合)的填充,自动完成是基于: 当实例化数据库user后, ...

  3. jps命令使用

    jps工具 jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前全部java进程pid的命令,简单有用,很适合在linux/un ...

  4. openfire文件夹

    插件开发 学习制作第一个 openfire 插件 http://www.cnblogs.com/jying/p/3683409.html 跟我一步一步开发自己的Openfire插件 http://bl ...

  5. OLE-DB 操作excel 基本

    1 方法用例   *&---------------------------------------------------------------------* *& 本程序总结了常 ...

  6. ARM体系结构_DAY2

    程序状态寄存器(CPSR) Mode位[4:0]:处理器模式为 USER模式不能直接切换到特权模式,在特权模式下可以直接修改mode位[4:0]为10000,切换到USER模式. T bit位[5]: ...

  7. 使用RDS不得不知的注意事项

    使用RDS不得不知的注意事项 1.RDS实例升级需要注意的事项 RDS在进行实例升级的过程中会出现最长30秒左右的连接闪断,需要您提前做好准备,并设置好程序跟RDS的自动重连,避免因为升级的闪断导致您 ...

  8. CSS3滤镜filter浅析

    在实现特定显示效果的页面中,css的filter属性是一种强大的工具.它能让我们的页面更加地个性化并减少PS方面的工作.filter的属性值主要有以下十种: blur grayscale sepia ...

  9. 设置c#windows服务描述及允许服务与桌面交互的几种方法(转)

    方法一: 在ProjectInstaller.cs重写 install() ,Uninstall()方法 public override void Install(IDictionary stateS ...

  10. 《第一行代码》学习笔记11-活动Activity(9)

    1.android:theme,是用于给当前活动指定主题的,Android系统内置很多主题可以选择,@android:style/Theme.Dialog则是 让DialogActivity使用对话框 ...