常见元字符 | |
元字符 | 说明 |
\s | 匹配单个空格,包括tab键和换行符 |
\S | 匹配出单个空格符以外的全部字符,\S与\s互为逆运算 |
\d | 匹配从0~9的数字 |
\w | 匹配字母,数字或者下划线字符 |
\W | 匹配全部与\w不匹配的字符,\W与\s互为逆运算 |
\cx | 匹配由x指明的控制字符。例如,\cZ匹配一个Control-Z。x的值必须为A~Z或者a~z之一。不然,将c视为一个愿意的'c'字符 |
\f | 匹配一个换页符,等价与\x0c和\cL |
\n | 匹配一个换行符,等价于\x0a和\cJ |
\r | 匹配一个回车符,等价于\x0d和\cM |
\t | 匹配一个制表符,等价于\x09和\cI |
\v | 匹配一个垂直制表符。等价于\x0b和\cK |
. | 用于匹配除换行符以外的全部字符 |
限定符说明 | |
限定符 | 说明 |
* | 匹配前导字符出现零次或者屡次 |
+ | 匹配前导字符出现一次或者屡次 |
? | 匹配前导字符出现零次或者一次 |
{n} | 匹配前导字符出现n次,n>=0; |
{n,} | 匹配前导字符至少出现n次,n>=0; |
{n,m} | 匹配前导字符至少出现n次,最多出现m次;m>n>=0; |
定位符说明 | |
定位符 | 说明 |
^ | 匹配模式必须出如今目标字符串开头 |
$ | 匹配模式必须出如今目标的结尾 |
\b | 匹配模式必须出如今目标字符串的开头或者结尾的两个边界之一 |
\B | 匹配对象必须位于目标字符串的开头和结尾的两个边界以内,即匹配对象既不能做为目标字符串的开头,也不能做为目标字符串的结尾 |
在匹配模式须要使用元字符时,须要使用转移字符“\+元字符”表示,如查找“12*”模式,咱们可使用/12\*/表示;构造玩正则表达式之后,就能够像使用数学表达式同样来求值。正则表达式在匹配过程当中是按照从左向右的顺序进行的,其操做符具备必定的优先级顺序html
优先级顺序 | ||
优先级 | 操做符 | 说明 |
1 | \ | 转义符 |
2 | (),(?:),(?=),[] | 圆括号和方括号 |
3 | *,+,?,{n},{n,},{n,m} | 限定符 |
4 | ^,$,\anyMatchcharacter | 位置顺序 |
5 | | | 或操做 |
RegExp对象的静态属性 | |
属性 | 说明 |
index | 只读属性,返回字符串中第一次与模式相匹配的子字符串的开始位置,初始值为-1; |
input | 只读属性,返回当前被正则表达式模式做用的字符串,能够简写为“$_”,初始值为空字符串; |
lastIndex | 只读属性,返回被查找字符串中下一次成功匹配的子字符串的开始位置,其初始位置为-1,其值会随着匹配的不一样而被修改; |
lastMatch | 只读属性,返回正则表达式在搜索过程当中最后匹配的字符,能够简写为:“$&”; |
lastParen | 只读属性,返回正则表达式在查找过程当中最后用园括号括起来的子匹配; |
leftContext | 只读属性,返回被搜索字符串中从开始位置到最后匹配以前为之间的字符,能够简写为"$^"; |
rightContext | 只读属性,返回被搜索字符串中从最后一个匹配位置开始到字符串结尾之间的字符,能够简写为"$'"; |
$1-$9 | 表明$1,$2...$9等9个只读属性,返回9个在模式匹配期间找到的,最近保存的部分; |
RegExp对象的实例属性 | |
global | 只读属性,布尔值,表示建立RegExp时是否设置了g标志,若是设置了则返回true,不然返回false; |
ignoreCase | 只读属性,布尔值,表示建立RegExp时是否设置了i标志,若是设置了则返回true,不然返回false; |
multiline | 只读属性,布尔值,表示建立RegExp时是否设置了m标志,若是设置了则返回true,不然返回false; |
source | 只读属性,字符串型,返回正则表达式模式字符串; |
RegExp对象的方法 | |
exec() | RegExp对象的exec()方法是与正则表达式匹配的强大方法,语法格式为:array=reObj.exec(str); |
test() | RegExp对像的Test()方法用于在给定的字符串中测试正则表达式是否匹配,其基本语法为:var passed=reObj.text(str);若是匹配则返回true,不然返回false |
compile() | RegExp对象的compile()方法用于将正则表达式编译为内部格式,从而执行得更快,其基本语法为:reObj.compile(pattern[,flag]); |
String对象的4个正则表达式方法 | |
search() | 用于查找特定子字符串,其基本语法为var str=strObj.search(re);方法返回第一个与正则表达式匹配的子字符串; |
replace() | 用于检索与替换操做,其基本语法格式为:strObj.replace(re,str);若是re不是正则表达式,则表示普通字符串替换; |
match() | 使用正则表达式模式对字符串进行查找,使用方法为var array=strObj.match(re);返回三个属性:1)input包含整个被查找字符串,2)index包含了整个被查找字符串中的匹配的子字符串的位置,lastindex属性包含了最后一次匹配字符串的位置; |
split() | 可使用正则表达式作参数做为分割字符标志分割字符串; |
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、正则表达式
文章采集正则之我见ide
/(\w+).htm 根据上面的参数可知 匹配全部以字符下划线数字字符的以.htm结尾的,好比/123kl_p.html工具
(/(\w+))*.htm 注意 *但是匹配前导字符 0次或者0次以上的 匹配当前页面全部的以.htm结尾的,而且无限极例如 /q/u/f/j/123_0p.htm.测试
(/(\w+))+.htm 注意 +但是匹配前导字符 1次或者0次以上的 匹配当前页面全部的以.htm结尾的,而且无限极例如 /q/u/f/j/123_0p.htm. 增长一个过滤功能spa
下面的惟一与上面不一样的是 将w换为了d,也就是缩小了范围 只是匹配数字htm
/(\d+).htm 根据上面的参数可知 匹配全部以数字.htm结尾的,好比/123.html对象
(/(\d+))*.htm 注意 *但是匹配前导字符 0次或者0次以上的 匹配当前页面全部的以.htm结尾的,而且无限极例如 /1/2/3/4/1239.htm.blog
(/(\d+))+.htm 注意 +但是匹配前导字符 1次或者0次以上的 匹配当前页面全部的以.htm结尾的,而且无限极例如 /1/2/3/4/1239.htm. 增长一个过滤功能ip