JavaScript 正则表达式 笔记
特殊字符转义(小写!)
\w word 字母数字下划线[a-zA-Z0-9_]
\s space 任何Unicode空白符 [\n\r\f\t\v]
\d decimal [0-9]
\b bound 单词边界 (/^JavaScript\b/ 与 “JavaScript is...”匹配,不与“JavaScript:alert('');”匹配)
重复
{n}
{m, n}
{m,} 重复次数大于m
分组与引用
通过括号对正则表达式进行分组。
分组两个作用:一是重复,而是引用。
\ $
匹配位置
(?= ) 预查 指定匹配字符串接下来应该出现的匹配串
如:/JavaScript(?=hello)/ 匹配 “JavaScripthelloworld”中的JavaScript串
(?! ) 预查非
(?: ) 匹配但不获取
标志
m 多行模式匹配 不加则只匹配单行结果 ^行首 $行尾
其他
\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。
\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。
\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。
匹配中文字符的正则表达式: [u4e00-u9fa5]
匹配双字节字符(包括汉字在内):[^x00-xff]
? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串
(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
怎样查看自己的正则表达式是否写对(检查转义字符是否写对),可以查看正则表达式对象的.source属性。
示例代码
欢迎交流前端开发技术!