非捕获、前瞻、后顾、负前瞻、负后顾和引用这几个地方一直掌握的不好,所以用的自然就少,特意整理自己再学习。
非捕获
用法:(?:) 用法与捕获类似,区别就是非捕获的结果集中不存在括号内值,所以\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:替换所有匹配。