英文为Regular expression
,简称:regex
或regexp
。
含义:按照某种规则去匹配符合条件的字符串正则表达式
正则表达式由两种基本字符类型构成:express
元字符是在正则表达式中有特殊含义的非字母字符:*
+
?
^
$
.
|
\
()
{}
[]
等code
经常使用字符集: \t
:水平制表符 \v
:垂直制表符 \n
:换行符 \r
:回车符 \0
:空字符 \f
:换页符 |
:或regexp
字符类:
由元字符[]
建立。字符类取反:由^
建立,反向类,[^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_]
,非单词字符 io
边界: ^
:开始标记,以xx
开始 $
:结束标记,以xx
结束 \b
:单词边界 \B
:非单词边界 ast
量词: ?
:出现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
:是否全文搜索,默认false
ignore case
:是否大小写敏感,默认false
multiline
:多行搜索,默认值是false
lastindex
:是当前表达式匹配内容的最后一个字符的下一个位置source
:正则表达式的文本字符串