上次介绍了工作当中常用到的正则表达式的基础篇,这次来介绍一下我工作当中经常使用到的正则中篇
常见的数量修饰符
o? 表示匹配0次或者一次 有或者没有都行
o* 表示匹配0次或者1次或者多次(任意个)
o+ 表示匹配1次或者多次 至少得有一次
o{m,n} 表示匹配的数量是大于m 小于n,包含m与n
o{m,}表示至少大于m次
o{m}表示匹配的次数只能是m次,限定次数
常见的锚修饰符
^ 表示从头开始匹配 需要区分非[]修饰符,该修饰符的位置是中括号的外面1从头开始匹配
$ 表示从尾开始匹配
\b 匹配是否到了边界在[]中无效
\B匹配不是边界
中括号[a-zA-Z]表示的是字母a-z A-Z 之间
中括号[0-9]表示的是数字0到9之间
在中括号[]当中加上[^ 0-9]表示非0到9之间的数字
使用元符号匹配
.点字符表示的是除了换行符之外的所有字符,注意点.的个数需要一一对应
\d 匹配的是数字
\D匹配的是非数字
\w匹配的是数字和字母_下划线
\W 匹配的是非数字和字母及_下划线
分组
如果匹配的是一组需要定义的字符串可以采用分组,例如:
var pattern=/ab(def){2,6}/ //匹配的是一组def
var pattern=/abdef{2,6}/ //匹配的是单个f
或运算符|
var pattern=/ab|cd|ef/ //匹配的是这三组当中的任意一组
获取分组的值
var pattern=/8(.*)8/;
var str=‘this is a 8Google8’;
pattern.test(str);
alert(RegExp.$1);可以获取到Google
贪婪模式和非贪婪模式
这个是工作当中经常使用到的
var pattern=/[a-z]+/;
var str=‘abcdefg’;
var result=str.replace(pattern,1);//该模式下会将所有的字母全部替换成了1
如果采用惰性模式
字符串还是上面的字符串,模式匹配修改成如下
var pattern=/[a-z]+?/;
str.replace(pattern,1);
只有第一个字符会被替换
如果希望匹配的字符逐个替换,
var pattern=/8(.*?)8/g;
var str=‘8Google8 8Google8 8Google8’;
str.replace(pattern,‘hao’)
这样操作将全部替换三组匹配的字符串
0-9 ↩︎