正则表达式是描述字符模式的对象。正则表达式直接量定义为包含在一对斜杠(/)之间的字符。例:/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对象的属性以及反映匹配结果。
以上内容为学习正则表达式的知识点总结