单个字符与数字
. 查找单个字符,除换行符和行结束符
[a-z0-9] 匹配方括号中的任意字符
[^a-z0-9]匹配不在方括号中的任意字符
\d 匹配数字
\D 匹配非数字
\w 匹配字母
\W 匹配非字母javascript
空白字符
\0 匹配null字符
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\s 匹配空白字符
\S 匹配非空白字符
\t 匹配制表符java
定位符
^ 行首匹配
$ 行尾匹配
\A 只匹配字符串的开始处
\b 匹配单词边界,此在[]内无效
\B 匹配非单词边界
\G 匹配当前搜索的开始位置
\Z 匹配字符串结束处或行尾
\z 只匹配字符串结束处正则表达式
限定符
x? 匹配0个或1个x
x* 匹配0个或任意多个x
x+ 匹配至少1个x
x{m,n} 匹配最少m个,最多n个x数组
分组
(?:x) 匹配x但不记录匹配结果
x(?=y) 当x后接y时匹配x
x(?!y) 当x后不是y时匹配x函数
模式修饰符
g全局模式,应用于全部字符串;
i执行对大小写不敏感的匹配;
m多行匹配模式测试
exec
功能:在字符串中执行匹配检索,返回结果数组
参数:要应用模式匹配的字符串
特性:使用全局标记g 持续查找全部匹配项并返回
不使用全局标记g 始终返回第一个匹配项信息
执行过程:
①检索字符串参数,获取正则表达式匹配文本
②找到匹配文本则返回一个数组:
第0个元素——与整个模式匹配的字符串
其它元素——与捕获组匹配的字符串
③不然返回null
派生属性:
①index 匹配项在字符串中的位置
②input 应用正则表达式的字符串
③length 返回数组元素的个数code
test
功能:在字符串中测试模式匹配,返回true或falseip
注意:贪婪匹配
须要特别指出的是,正则匹配默认是贪婪匹配,也就是匹配尽量多的字符。举例以下,匹配出数字后面的0
;字符串
var re = /^(\d+)(0*)$/; re.exec('102300'); // ['102300', '102300', '']
因为\d+
采用贪婪匹配,直接把后面的0
所有匹配了,结果0*
只能匹配空字符串了。input
必须让\d+
采用非贪婪匹配(也就是尽量少匹配),才能把后面的0
匹配出来,加个?
就能够让\d+
采用非贪婪匹配:
var re = /^(\d+?)(0*)$/; re.exec('102300'); // ['102300', '1023', '00']