模式 | 重要说明 |
^ | 匹配开头的位置,当正则有修饰符 m 时(多行文本),表示匹配行开头位置。 |
$ | 匹配结尾的位置,当正则有修饰符 m 时(多行文本),表示匹配行结尾位置。 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
(?=表达式) | 正向先行断言:(?=表达式),指在某个位置的右侧必须能匹配表达式。 |
(?!表达式) | 反向先行断言:(?!表达式),指在某个位置的右侧不能匹配表达式。 |
(?<=表达式) | 正向后行断言:(?<=表达式),指在某个位置的左侧必须能匹配表达式。注意: 先行断言和后行断言只有一个区别,即先行断言从左往右看,后行断言从右往左看。 |
(?<!表达式) | 反向后行断言:(?<=表达式),指在某个位置的左侧必须能匹配表达式。 |
字母、数字 | 匹配字符本身。比如/javascript/,匹配 "javascript";/123/,匹配 "123"。 |
\0 | 匹配 NUL 字符。 |
\t | 匹配水平制表符。 |
\v | 匹配垂直制表符 |
\n | 匹配换行符。 |
\r | 匹配回车符。 |
\f | 匹配换页符。 |
\xnn | 匹配拉丁字符。比如 \xOA 等价于 \n。 |
\uxxxx | 匹配 Unicode 字符。比如 \u2028 匹配行终止符,\u2029 匹配段终止符。 |
\cX | 匹配 ctrl+X。比如 \cI 匹配 ctrl+I,等价于 \t。 |
[\b] | 匹配 Backspace 键(特殊记忆)。 |
[abc] | 匹配 "a"、"b"、"c" 其中任何一个字符。 |
[a-d1-4] | 匹配 "a"、"b"、"c"、"d"、"1"、"2"、"3"、"4" 其中任何一个字符。 |
[^abc] | 匹配除了 "a"、"b"、"c" 之外的任何一个字符 |
[^a-d1-4] | 匹配除了 "a"、"b"、"c"、"d"、"1"、"2"、"3"、"4" 之外的任何一个字符。 |
. | 通配符,匹配除了少数字符(\n)之外的任意字符。 |
\d | 匹配数字,等价于 [0-9]。 |
\D | 匹配非数字,等价于 [^0-9]。 |
\w | 匹配单词字符,等价于 [a-zA-Z0-9_]。 |
\W | 匹配非单词字符,等价于 [^a-zA-Z0-9_]。 |
\s | 匹配空白符,等价于 [ \t\v\n\r\f]。 |
\S | 匹配非空白符,等价于 [^ \t\v\n\r\f]。 |
量词
{n,m} | 连续出现 n 到 m 次。贪婪模式。 |
{n,} | 至少连续出现 n 次。贪婪模式。 |
{n} | 连续出现 n 次。贪婪模式。 |
? | 等价于 {0,1}。贪婪模式。 |
+ | 等价于 {1,}。贪婪模式。 |
* | 等价于 {0,}。贪婪模式。 |
{n,m}? | 连续出现 n 到 m 次。惰性模式。最多匹配到 n 个 |
{n,}? | 至少连续出现 n 次。惰性模式。最多匹配到 n 个 |
{n}? | 连续出现 n 次。惰性模式。 |
?? | 等价于 {0,1}?。惰性模式。 |
+? | 等价于 {1,}?。惰性模式。 |
*? | 等价于 {0,}?。惰性模式。 |
括号的作用
(ab) | 捕获型分组。把 "ab" 当成一个整体,比如 (ab)+ 表示 "ab" 至少连续出现一次。 |
(?:ab) | 非捕获型分组。与 (ab) 的区别是,它不捕获数据。 |
(good|nice) | 捕获型分支结构。匹配 "good" 或 "nice"。 |
(?:good|nice) | 非捕获型分支结构。与 (good|nice) 的区别是,它不捕获数据。 |
\num | 反向引用。比如 \2,表示引用的是第二个括号里的捕获的数据。 |
- 贪婪模式――在匹配成功的前提下,尽可能多的去匹配
- 惰性模式――在匹配成功的前提下,尽可能少的去匹配