正则表达式是描述字符模式的对象。正则表达式直接量定义为包含在一对斜杠(/)之间的字符。例:/s$/ –匹配所有以s结尾的字符串。
正则表达式中的所有字母和数字都是按照字面含义进行匹配的。JS正则表达式语法也支持非字母的字符匹配。这些字符需要通过反斜线(\)作为前缀进行转义。
比如,\n用来匹配换行符。
正则表达式中的直接量字符

字符

匹配

字母和数字字符

自身

\o

NUL字符(\u0000)

\t

制表符(\u0009)

\n

换行符(\u000A)

\v

垂直制表符(\u000B)

\f

换页符(\u000C)

\r

回车符(\u000D)

\xnn

由十六进制数nn指定的拉丁字符,例如,\x0A等价于\n

\uxxx

由十六进制数nn指定的Unicode字符,例如,\x0009等价于\n

\cX

控制字符^X,例如,\cJ等价于换行符\n

在正则表达式中,许多标点符号具有特殊含义

字符

含义

字母和数字字符

自身

*

匹配任意次

+

匹配一次或多次


匹配0次或多次

$

以……为结尾

^

以……为开头)

.

除换行符和其他Unicode行终止符外的任意字符

()

分组

(?:)

忽略分组

正则表达式的字符类

字符

匹配

【……】

方括号内的任意字符

【^……】

不在方括号内的任意字符

\w

单词字符(字母数字和下划线)等价于【a-zA-Z0-9】

\W

除单词字符(字母数字和下划线)之外等价于【^a-zA-Z0-9】

\s

空白

\S

非空白

\d

数字

\D

非数字

\b

以……边界

\B

非边界

量词

字符

匹配

{n,m}

匹配前一项至少n次最多m次

{n,}

匹配前一项至少n次

{n}

匹配前一项n次

*

匹配任意次

+

匹配一次或多次


匹配0次或多次

贪婪模式:正在表达式默认的,尽可能多的匹配次数,直到匹配失败。
非贪婪模式:尽可能少的匹配次数。实现方式在量词后加?
例如: /\d{3,5}/g 贪婪模式
/\d{3,5}?/g 非贪婪模式
上面出现的g表示全文搜索

字符

匹配

g

全文搜索

i

忽略大小写

m

多行搜索

$

反向引用*

反向引用:例如,/(\d)\w/ $1就可以表示(\d)所匹配到的内容
示例:2017/03/15 使用/(\d{4})/(\d{2})/(\d{2})/ 匹配到前面的日期,那么 $3-$2-$1的显示结果就是 15-03-2017

前瞻和后顾:特别强调JS正则表达式不支持后顾
前瞻和后顾就是判断匹配字符其前后条件是否满足。正则表达式从文本头部向尾部解析,所以文本尾部为前。

正则表达式的对象属性 : g、i、m之前介绍过了

– lastIndex:当前表达式匹配内容的最后一个字符的下一个位置。 
 – source:正则表达式的文本字符串,即查看正则表达式的文本内容。 
 –test(str):测试内容是否符合正则表达式。 
 –exec(str):对字符串进行搜索,并将更新全局RegExp对象的属性以及反映匹配结果。

以上内容为学习正则表达式的知识点总结