用于规定在文本中检索的内容
风格
- JS风格:
new RegExp("a","i") - Perl风格:
/a/i
修饰符
- g:用于查找全部,global的简称
- i:用于忽略大小写
- m:允许多行匹配
元字符
区别原义字符,元字符是有特殊含义的非字母字符
- ·
- .(点,任意字符)
- *(量词,任意次,可有可无)
- +(量词,一次或多次)
- ?(量词,零次或一次)
- $(结尾)
- ^(开头)(反向类,不属于某类的内容
[^abc]) - | (或)
- /(正则)
- \(转义)
- ((捕获分组)
- )(捕获分组)
- {(包含量词)
- }(包含量词)
- [
- ]
- \t 水平制表符
- \n 换行
- \0 空字符
- \v
- \r 回车符
- \f 换页符
- \cX 剪切
范围类
- [a-z]
- [A-Z]
- [0-9]
- [a-z0-9A-z]
预定义
- . 等价于
[^\r\n]除了回车符和换行符之外所有字符 - \d 数字
- \D 非数字
- \s 空白符space
- \S 非空白符
- \w 单词(字母,数字,下划线)
- \W 非单词
量词
- ? 零次或一次
- + 出现一次或多次
- * 任意次
- {n} 出现n次
- {n,m} 最少n次,最多m次
- {n,} 最少n次,最多不限
属性
- lastIndex (只在g生效)当前表达式匹配内容的最后一个字符的下一个位置
- source 正则文本字符串,即/source/
reg.lastIndex
方法
- test 用于测试字符串参数中间是否存在匹配正则的字符串,返回true或false
- exec 使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性以反应匹配结果,返回数组
[匹配字符串,分组1,分组2,···]或null - search
stringObject.search(regexp)返回相匹配的子串的起始位置或-1,search() 方法不执行全局匹配,它将忽略标志 g - match
stringObject.match(regexp)非全局调用,返回[匹配文本,分组]或null,index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用;全局调用返回[匹配文本]或null,没有 index 属性或 input 属性 - split
stringObject.split(regexp,howmany)howmany可选。该参数可指定返回的数组的最大长度。返回一个字符串数组,字符串 stringObject 分割成的子串 - replace
stringObject.replace(regexp,replacement/function(str,...分组内容,匹配项在字符串中的index,原字符串){}) - compile 改变正则表达式
reg1.compile("d")
其他
正则属于贪婪模式,想尽可能多的匹配
?非贪婪模式,只匹配一次就结束/\d{3,5}?/g
前瞻:向前检查是否符合断言->\
// 正向前瞻
exp(?=assert)
/\w(?=\d)/g //匹配第一位为数字或字母,第二位为数字
// 负向前瞻
exp(?!assert)
后顾:与前瞻相反,js不支持后顾