正则表达式是匹配模式,要么匹配字符,要么匹配位置
正则表达式之所以强大,是因为它能实现模糊匹配
模糊匹配有两个方向上的匹配:
- 横向模糊
- 纵向模糊
横向模糊
一个正则可匹配的字符串的长度不是固定的
正则 /ab{2,5}c/ 表示匹配这样一个字符串:
第一个字符是 “a”,接下来是 2 到 5 个字符 “b”,最后是字符 “c”
纵向模糊
具体到某一位字符时,它可以不是某个确定的字符,可以有多种可能
比如 /a[123]b/ 可以匹配如下三种字符串: “a1b”、“a2b”、“a3b”
复杂一点的情况:
也就是匹配的字符较多,这时候采用范围表示法
[123456abcdefGHIJKLM],可以写成 [1-6a-fG-M]。用**连字符 -** 来省略和简写
这里面存在一个问题:
就是当我们需要匹配**连字符-**时,就可能产生歧义
所以我们需要以下方式来避免产生歧义
[-az] 或 [az-] 或 [a\-z] // \是转义符
字符组 | 具体含义 |
---|---|
\d | 表 记示 忆方式:其 [0-9]。表 英示 文是 是一digit 位数字 (数字) 。 。 |
\D | 表示 [^0-9]。表示除数字外的任意字符。 |
\w | 表 记示 忆方式: [0-9a-zA-Z_] w 是 word 。表的示数字、 简写,也大小写 称单词字字符 母和下 。 划线。 |
\W | 表示 [^0-9a-zA-Z_]。非单词字符。 |
\s | 表示 [ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页 符。 |
\S | 表示 [^ \t\v\n\r\f]。 非空白符。 |
. | 表示 [^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符 除外。 |
可以使用 [\d\D]、[\w\W]、[\s\S] 和 [^] 中任何的一个 来匹配任意字符
量词 | 具体含义 |
---|---|
{m,} | 表示至少出现 m 次。 |
{m} | 等价于 {m,m},表示出现 m 次。 |
? | 等价于 {0,1},表示出现或者不出现。 |
+ | 等价于 {1,},表示出现至少一次。 |
* | 等价于 {0,},表示出现任意次,有可能不出现。 |