正则表达式——非捕获、前瞻、后顾、负前瞻、负后顾和引用

非捕获、前瞻、后顾、负前瞻、负后顾和引用这几个地方一直掌握的不好,所以用的自然就少,特意整理自己再学习。

非捕获

用法:(?:) 用法与捕获类似,区别就是非捕获的结果集中不存在括号内值,所以\1什么的就取不到了。

例子【简单,全部就用JS测试了】

var patt1=new RegExp(“(this) is “);

undefined

patt1.exec(“this is a test”)

[“this is “, “this”]

var patt1=new RegExp(“(?:this) is “);

undefined

patt1.exec(“this is a test”)

[“this is “]

(正向)前瞻

用法:(?=) 即后面必须匹配该内容。

“this is a test”.match(“this (?=is)”)

[“this “]

负向前瞻

用法:(?!) 即后面必须不匹配该内容。

“this is a test”.match(“this (?!is)”)

null

正向后顾

用法:(?<=) 即前面必须匹配该内容。
JS不支持!

负向后顾

用法:(?<!) 即前面必须匹配该内容。
JS不支持!

引用

“小括号包含的表达式所匹配到的字符串” 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。

‘aaabbbcccdddeeefff’.match(/([abc])\1/g);

[“aa”, “bb”, “cc”]

常用的表达式属性设置简介

Ignorecase:不区分大小写;
Singleline:单行模式;
Multiline:多行模式;
Global:替换所有匹配。