非捕获分组
非捕获分组:匹配regex但不获取匹配结果,不进行存储供以后使用,避免浪费内存
(?:regex)
匹配到regex后,不获取匹配结果
/(?:\d)(.*?)(?:[a-z])/ //匹配中间分组
向前查找(?=regex)
以regex作为限制项进行匹配,匹配到这个子表达式后,就会继续向前查找(匹配以regex结尾的单词的前面部分(除了regex以外的部分))
//匹配的是HTML标签内里的内容(再次提醒,不包括前缀和后缀本身)
/(?<=<(\w+)>).*(?=<\/\1>)/
/(?<=<(\w+)>)/ //匹配以<word字符>开头的
/(?=<\/\1>)/ //匹配以</word字符>结尾的
负前向查找(?!regex)
以regex作为限制,向前查找,被指定的子表达式不能被匹配到(匹配不以regex结尾的单词的前面部分,或者不包含匹配regex的单词)
例如:
/\d{3}(?![a-z])/ 匹配后面不是小写字母的三位数字; //匹配不以小写字母结尾的字符串的前面部分
/\b((?!abc)\w)+\b/ 匹配不包含连续字符串abc的单词。
/^(?!.*diversity)/ 匹配不包含连续字符串diversity的字符串
前后查找(?<=regex)
以regex作为限制项进行匹配,匹配到这个子表达式后,就会继续向后查找(匹配以regex开头的单词的后面部分(除了regex以外的部分))
负前后查找(?<!regex)
以regex作为限制,向后查找,被指定的子表达式不能被匹配到(匹配不以regex开头的单词的后面部分,或者不包含匹配regex开头的单词)
【注意】:只能写在前面限制后面,向后查找,如果后面没有查找内容,则没有限制
例如:
/(?<![a-z])\d{7}/ 匹配前面不是小写字母的七位数字。//匹配不以小写字母开头的字符串的后面部分
var str = 'apple people';
只想找到apple的ple,匹配以ap开头的ple
/(?<=ap)ple/ 或者 /(?<!peo)ple/
友情链接: