正则表达式用于字符串比配,由于其高效性可以大幅度减少服务器端开销。
两种创建方式:
var box = new RegExp("box","ig");
var box1 = /box/ig;
/** 第二个参数可选模式修饰符
i : 忽略大小写
g : 全局匹配
m : 多行匹配
**/
|
- 常用正则比较方法
test 正则对象(RegExp)的正则比较,返回true/false。使用方法:
RegExpObject.test(String)
exec 正则对象的正则比较,返回匹配的字符串。使用方法:
RegExpObject.exec(String)
当 RegExpObject 是一个全局正则表达式时,exec() 的行为就稍微复杂一些。它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。
match
字符串方法的正则比较,返回匹配的字符串数组。使用方法:
String.match(RegExpObject )
replace
字符串方法的正则比较,返回匹配替换后的字符串。使用方法:
String.replace(RegExpObject, "replacement")
search
字符串方法的正则比较,返回第一个匹配到字符串的位置,查找不到返回-1。使用方法:
String.search(RegExpObject )
split
字符串方法的正则比较,以匹配到的字符作为分隔,将原有字符串拆分成数组,返回数字。使用方法:
String.match(RegExpObject )
|
- RegExp对象的静态方法
input:当前被匹配的字符串
lastMatch:最后一个匹配字符串
lastParen:最后一对圆括号内的子字符串,分组
leftContext:匹配之前的子字符串
multiline:所有表达式是否都用于多行,布尔值。
rightContext:匹配之后的子字符串
|
- RegExp的实例属性
global:g 属性是否被设置
ignoreCase:i 属性是否被设置
multiline:m 属性是否被设置
source:正则的源字符串
lastIndex:exec后的index
|
- 获取控制
单个字符和数字
|
. 匹配除换行符外的任意一个字符
[a-z0-9] 匹配括号中字符集中的任意字符
[^a-z0-9] 匹配不在括号中字符集中的任意字符
\d 匹配数字
\D 匹配非数字
\w 匹配字母和数字及_
\W 匹配非字母和数字及_
|
空白字符
|
\0 匹配null字符
\b 匹配空格字符
\n 匹配换行符
\r 匹配回车字符
\t 匹配制表符
\s 匹配空格、空白、制表和换行符
\S 匹配非空白字符
|
锚字符
|
^ 行首匹配
$ 行尾匹配
\A
\b 匹配边界
\B
\G
\Z
\z
|
重复字符
|
x? 匹配0个或1个x
x* 匹配0个或多个x
x+ 匹配至少1个x
(xyz)+ 匹配至少1个(xyz)
x{m,n} 匹配{m,n}区间个x
|
替换字符
| | 或操作 |
记录字符
|
() 分组,分组后相当于一个整体的字符
\1或$1 匹配第一个分组
\2或$2 匹配第二个分组
|
- 贪婪和惰性
贪婪:可匹配的最大限度
惰性:可匹配的尽量少
|
- 前瞻捕获:例:/goo(?=gle)/ 当goo后紧跟gle时才进行捕获,捕获返回goo
- 常用正则表达式
|