-
普通
let pattern = /^[a-z]+\s[0-9]{4}$/; let str = 'google 2012'; alert(pattern.exec(str)); //返回一个包含字符串的数组 let pattern = /^[a-z]+/; //只匹配到字母 let str = 'google 2012'; alert(pattern.exec(str)); //只返回google的字符串数组 let pattern = /^([a-z]+)\s([0-9]{4})$/; //使用了分组 let str = 'google 2012'; let a = pattern.exec(str); //alert(a.length); //3 alert(a[0]); //a[0],返回匹配到的整个字符串 alert(a[1]); //a[1],返回匹配到的第一个分组的字符串 alert(a[2]); //a[2],返回匹配到的第二个分组的字符串
-
捕获性分组
let pattern = /(\d+)([a-z])/; //这个叫做捕获性分组,所有的分组都捕获返回 let str = '123abc'; let a = pattern.exec(str); //a[0]返回123a //a[1]返回123 //a[2]返回a
-
非捕获性分组
let pattern = /(\d+)(?:[a-z])/; //非捕获性分组,只要在不需要捕获返回的分组加上?: let str = '123abc'; alert(pattern.exec(str));
-
嵌套分组
let pattern = /(a?(b?(c?)))/; //嵌套分组,从外往内获取 let str = 'abc'; alert(pattern.exec(str)); //第一步:a[0],整个匹配到的字符串abc //第二步:a[1],匹配第一个分组(a?(b?(c?))), abc //第三步:a[2],匹配第二个分组(b?(c?), bc //第三步:a[3],匹配第三个分组(c?), c
-
前瞻性捕获
let pattern = /goo(?=gle)/; //goo后面必须是gle才能返回goo,这里一定要注意,返回的是goo,而不是google let str = 'google'; alert(pattern.exec(str)); //返回的是goo,而不是google,这是前瞻性捕获
-
其他
let pattern = /\[/; //用\符号来转义正则里的特殊字符,才能匹配 let str = '['; alert(pattern.test(str)); let pattern = /^\d+/gm; //限定了首匹配,并且开启换行模式 let str = '1.baidu\n2.google\n3.bing'; alert(str.replace(pattern, '#'));
网友评论