JavaScript正则表达式
简单模式
直接匹配指定字符组合
//输入
let str1 = 'apple';
let reg1 = /pp/;
console.log(reg1.exec(str1));
//输出
pp
复杂模式-断言
边界类断言
| 匹配符 | 含义 | 举例 | 例子含义 |
|---|---|---|---|
| ^ | 匹配输入的开头 | /^A/ | 可以匹配Apple的A |
| $ | 匹配输入的结束 | /t$/ | 可以匹配eat的t |
| \b | 匹配单词的边界 | /\bm/ | 可以匹配mmon的m |
| /n\b/ | 可以匹配moon的n | ||
| \B | 匹配非单词边界(匹配单词内部) | /\Bon/ | 可以匹配at noon的on(以前面的单词o为准) |
| /ye\B/ | 可以匹配possibly yesterday的ye(以后面的单词e为准) |
其他断言
| 匹配符 | 含义 | 举例 | 例子含义 |
|---|---|---|---|
| x(?=y) | 向前断言,如果x后面是y,则匹配x | /Jack(?=Joe)/ | 当Jack后面是Joe时匹配Jack |
| /Jack(?=Joe|May)/ | 当Jack后面是Joe或May时匹配Jack | ||
| x(?!y) | 向前否定断言,x没有被y紧随时匹配x | /\d+(?!\.)/ | 数字后面没有跟随小数点时才会得到匹配,例如对于3.14,匹配14而不匹配3 |
| (?<=y)x | 向后断言,x前面是y时匹配x | /(?<=Jack)Joe/ | 可以匹配JackJoe的Joe |
| /(?<=Jack|Tom)Joe/ | 当Joe前面是Jack或Tom时,可以匹配Joe | ||
| (? | 向后否定断言,x前面不是y时匹配x | /\(? | 数字前面没有负号时才会得到匹配,例如可以匹配到3,但是匹配不到-3 |
复杂模式-字符类
| 匹配符 | 含义 |
|---|---|
| . | 匹配除了换行符之外的任何单个字符(如果在字符集内,则与符号“.”匹配) |
| \d | 匹配数字,相当于[0-9] |
| \D | 匹配非数字,相当于[^0-9] |
| \w | 匹配字母数字下划线,相当于[A-Za-z0-9_] |
| \W | 匹配非字母数字下划线,相当于[^A-Za-z0-9_] |
| \s | 匹配所有类型的空格,,包括空格、制表符、换页符、换行符和其他Unicode字符,相当于[\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] |
| \S | 匹配除了空格之外的单个字符,相当于[^\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] |
| \t | 匹配水平制表符 |
| \r | 匹配回车符 |
| \n | 匹配换行符 |
| \v | 匹配垂直制表符 |
| \f | 匹配换页符 |
| [\b] | 匹配退格键 |
| \0 | 匹配NUL字符,例如可以匹配到“123\0”中的“\0” |
复杂模式-组和范围
| 字符集 | 含义 |
|---|---|
| x|y | 匹配x或y |
| [xyz] [a-c] |
字符集,匹配包含在字符集中的单个字符 |
| [^xyz] [^a-c] |
字符集,匹配不包含在字符集中的单个字符 |
| (x) | 匹配x并记住匹配项(如果不使用捕获组,则只会匹配到第一个符合要求的就停止) |
| \n | n是一个正整数。引用倒数第n个括号中的值。例如,/apple(,)\sorange\1/ 匹配 “apple,orange,cherry,peach” 中的 "apple,orange,", 其中 \1 引用了 之前使用()捕获的 , |
| (? |
具名捕获组。匹配"x"并将其存储在返回的匹配项的groups属性中,该属性位于 |
| (?:x) | 非捕获组。匹配"x",但不记得匹配 |
复杂模式-量词
| 匹配符 | 含义 |
|---|---|
| x* | 将前面的项“x”匹配0次或更多次 |
| x+ | 将前面的项“x”匹配1次或更多次 |
| x? | 将前面的项“x”匹配0次或1次 |
| x{n} | n是一个正整数,相当于匹配连续n个x |
| x{n,} | n是一个正整数,相当于匹配至少连续n个x |
| x{n,m} | n>=0,m>0,相当于匹配连续n到m个x |
| x*? x+? x?? x{n}? x{n,}? x{n,m}? |
默认情况下,像 * 和 + 这样的量词是“贪婪的”,这意味着它们试图匹配尽可能多的字符串。?量词后面的字符使量词“非贪婪”:意思是它一旦找到匹配就会停止。
|

浙公网安备 33010602011771号