关于正则表达式
正则表达式
英文为Regular expression,简称:regex或regexp。
含义:按照某种规则去匹配符合条件的字符串
正则表达式由两种基本字符类型构成:
- 原义文本字符
- 元字符
元字符是在正则表达式中有特殊含义的非字母字符:* + ? ^ $ . | \ () {} []等
常用字符集: \t:水平制表符 \v:垂直制表符 \n:换行符 \r:回车符 \0:空字符 \f:换页符 |:或
字符类:
由元字符[]创建。字符类取反:由^创建,反向类,[^123]表示不是字符1或2或3的内容
范围类: [a-z]:来连接两个字符表示从a到z的任意字符
预定义类: .:[^\r\n],除了回车符和换行符之外的所有字符 \d:[0-9],数字字符 \d:[^0-9],非数字字符 \s:[\t\n\x0B\f\r],空白符 \s:[^\t\n\x0B\f\r],非空白符 \w:[a-zA-Z0-9_],单词字符(字母、数字、下划线) \w:[^a-zA-Z0-9_],非单词字符
边界: ^:开始标记,以xx开始 $:结束标记,以xx结束 \b:单词边界 \b:非单词边界
量词: ?:出现0次或1次 +:出现1次或多个 *:出现0次或多次(任意次) {n}:出现n次 {n,}:出现n次或n次以上,当n为0时等价于*,n为1时等价于+ {n,m}:出现n次到m次,当n为0且m为1时等价于?
贪婪模式和非贪婪模式
正则表达式默认是贪婪模式,当使用量词进行匹配时,会尽可能匹配多的。
非贪婪模式:让正则表达式尽可能少的匹配,也就是说一旦成功匹配不再继续尝试。
在量词后面加上?即可
'123456789'.match(/\d{3,5}?/g)
result:{'123', '456', '789'}分组()
忽略分组:(?: Byron).(ok)
前瞻后顾
正向前瞻:exp(?=assert)
负向前瞻:exp(?!assert)
正向后顾:exp(?<=assert)
负向后顾:exp(?<!assert)
对象属性
global:是否全文搜索,默认falseignore case:是否大小写敏感,默认falsemultiline:多行搜索,默认值是falselastindex:是当前表达式匹配内容的最后一个字符的下一个位置source:正则表达式的文本字符串