javascript正则表达式获取控制
正则表达式的元字符是包含特殊含义的字符,他们有一些特殊的功能,可以控制匹配模式的方式,反斜杠后的元字符将失去其特殊含义
单个字符
元字符 匹配情况
. 匹配除换行符外的任意字符
[a-z0-9] 匹配括号中的字符集中的任意字符
[^a-z0-9] 匹配任意不在括号中的字符集中的字符
\d 匹配数字
\D 匹配非数字同[^0-9]相同
\w 匹配字母和数字及_
\W 匹配非字母和数字及_
重复字符
x? 匹配0个或者1个x
x* 匹配0个或者任意多个x
x+ 匹配至少1个x
(xyz)+ 匹配至少一个xyx
x{m,n} 匹配最少m个,最多n个x
替代字符
this|where|logo 匹配this或where或logo中任意一个
空白字符
\0 匹配null字符
\f 匹配进制字符
\n 匹配换行字符
\r 匹配回车字符
\t 匹配制表字符
\s 匹配空白字符,空格 制表和换行
\S 匹配非空白字符
锚字符
^ 匹配行首
$ 行尾匹配
\A 只有匹配字符串开始处
\b 匹配单词边界,词在[]内时无效
\B 匹配非边界单词
\G 匹配当前搜索的开始位置
\Z 匹配字符串结束处或行尾
\z 只匹配字符串结尾处
记录字符
(string) 用于反向引用的分组(括号内的看成一个字符)
\1或$1 匹配第一个分组中的内容
\2或$2 匹配第二个分组中的内容
\3或$3 匹配第三个分组中的内容
var box=/1(.*)9/; var str="duwei19890220@163.com"; str.match(box); alert(RegExp.$1); //表示获取模式中第一个分组对应匹配的字符串 我们这里获取的是98
var box=/1(.*)9/; var str="duwei19890220@163.com"; document.write(str.replace(box,"<strong>$1</strong>")); //这里的$1是获取第一个分组中的内容98 把他加粗
var box=/(.*)\s(.*)/; var str="duwei liuhaibo"; document.write(str.replace(box,"$2 $1")); //位置交换
exec返回数组的操作
var box=/^([a-z]+)\s([0-9]{4,4})$/; //使用分组 var str="duwei 2018"; //alert(box.exec(str)); //显示 duwei 2018 duwei,2018 为什么 exec方法返回的是数组 var a=box.exec(str); alert(a.length); //数组长度为3 alert(a[0]); //数组的第一个元素存储的是整个的字符串 alert(a[1]); //第二个下标存储的是第一个分组匹配的字符串 alert(a[2]);
var box=/(a?(b?(c?)))/; //嵌套分组 从外往内分组 var str="abc"; var a=box.exec(str); alert(a[0]); //整个匹配到的字符串abc alert(a[1]); //匹配第一个分组匹配字符串 abc最外面的大括号 alert(a[2]); //匹配第二个分组匹配字符串 bc 中间的括号 alert(a[3]); //匹配第三个分组匹配字符串 c最里面的括号