JS正则表达式CheetSheet
今天仔细研读了一下 ES2015 标准中的正则表达式部分,作此留念,方便查阅。
ES2015 和 ES5.1 在正则上的区别是: ES5.1 不支持 “\u{HH..H}”。
保留符号: ^, $, \, ., *, +, ?, (, ), [, ], {, }, |,/
| 元字符 | |
| . | 除换行之外的字符 |
| 非保留符号 | 匹配此字符 |
| \保留符号 | 匹配保留符号 |
| \d | 匹配任意数字[0-9] |
| \D | 匹配任意非数字[^0-9] |
| \s | 匹配任何空白字符[\f\n\r\t\v] |
| \S | 匹配任何非空白字符[^\f\n\r\t\v] |
| \w | 匹配任何单词字符[A-Za-z0-9_] |
| \W | 匹配任何非单词字符 |
| abc | xyz | 匹配 abc 或 xyz |
| [xyz] | 其中的一个字符 |
| [^xyz] | 非其中的字符 |
| \f | 匹配"\u000C",换页符 |
| \n | 匹配"\u000A",换行 |
| \r | 匹配"\u000D",回车 |
| \t | 匹配"\u0009",制表 |
| \v | 匹配"\u000B",垂直制表符 |
| \0 | 匹配"\u0000",NULL |
| \xHH | H 表示一位16进制数字,匹配"\xHH" |
| \uHHHH | 匹配"\uHHHH" |
| \u{任意个H} | 匹配"\u{HH…H}" |
| \cx | Ctrl-x(x是任意字母,不区分大小写) (a-z分别表示"0x01"-"0x1A") |
| 捕获 | |
| (表达式) | 捕获(编号从1开始)+改变优先级 |
| (?:表达式) | 改变优先级,不捕获 |
| \编号 | 前面捕获的值[注1] |
| 匹配位置 | |
| ^ | 起始 |
| $ | 结束 |
| \b | 单词边界 |
| \B | 非单词边界 |
| (?=表达式) | 后面匹配"表达式"的位置 |
| (?!表达式) | 后面不匹配"表达式"的位置 |
| 量词 | |
| ? | 匹配前面的子表达式 0 次或 1 次(尽可能多) |
| * | 匹配前面的子表达式任意次(尽可能多) |
| + | 匹配前面的子表达式 1 次或多次(尽可能多) |
| {n} | 匹配子表达式 n 次 |
| {n,} | 匹配子表达式大于等于 n次(尽可能多) |
| {n,m} | 最少匹配 n 次且最多匹配 m 次(尽可能多) |
| ?? | 匹配前面的子表达式 0 次或 1 次(尽可能少) |
| *? | 匹配前面的子表达式任意次(尽可能少) |
| +? | 匹配前面的子表达式 1 次或多次(尽可能少) |
| {n}? | 匹配子表达式 n 次(跟贪婪模式一样) |
| {n,}? | 匹配子表达式大于等于 n次(尽可能少) |
| {n,m}? | 最少匹配 n 次且最多匹配 m 次(尽可能少) |
注1: 在未捕获到值之前\数字会被大部分值JS引擎解释八进制数对应的值,比如\1(a)\1 会匹配 "\x01aa",\11匹配”\x09”。但是ES标准里面要求这种情况要抛出异常。另外,\数字中\ 后所有的数字作为一起,比如\11和(\1)1不等价,\11匹配捕获到的第11个值。
方括号中的改变
^作为第一个字符具有特殊意义-只有其前后都有字符才有特殊意义- 保留字符仅剩
\,-,] - 不能使用
\B和捕获的值\编号 \b匹配"\u0008"(退格)
版权信息
本文链接:http://zonxin.github.io/post/2016/07/javascript-RegExp-cheetsheet

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。