JavaScript 正则表达式的构成方式
字面量
/pattern/flagspattern是表达式文本flags是特殊参数:g——全局匹配;i——忽略大小写;m——让开头(^)和结尾($)字符工作在多行模式(由 \n 或 \r 分割的)多行模式:每一行的开头结尾也可匹配。关闭多行模式则只匹配整个字符串的开头和结尾
静态常量:构造完成后保持不变
- 构造函数:new RegExp("pattern","flags")
pattern是字符串,注意对 \ 的转义(” \\ “)
运行时编译→表达式可变
表达式文本由普通字符、特殊字符以及对应的重复规则组合而成。
例子:/abc/匹配字符串中的’abc’子串
特殊字符
★ 特殊字符都是单个字符!
字符类别
.英文句点,小数点——匹配任意单个字符(换行符除外)\d一个数字[0-9];\D一个非数字[^0-9]\w一个字母或数字或下划线[a-zA-Z0-9_];\W一个非字母非数字非下划线的字符[^a-zA-Z0-9_]\s一个空白符;\S一个非空白符\xhh一个编码为两位十六进制数(hh)的字符(ASCII码)\uhhhh一个Unicode字符,四位十六进制数- 其他:RexExp-MDN
字符集合
[abcde]匹配集合中的任意一个字符。abcde 等价于 a-e[^abcde]匹配任意一个不在集合中的字符。abcde 等价于 a-e
边界
^开头(字符串或每行)$结尾(字符串或每行)\b单词边界\B非单词边界(内部)
分组
捕获括号
(pattern):匹配表达式并保存括号内的字符串。replace()函数的第二个参数中使用
$1,$2,…$9获取反向引用
\n(n是正整数):指向正则表达式中左起第 n 个括号所匹配的字符串非捕获括号
(?:pattern):匹配但不保存
//不大理解。放上另一个说法:分组用于指定子表达式,单独确定重复次数或其他操作。参考
数量词(表达式或分组的重复次数)
位于表达式后面
*:0或多次+:1或多次?:0或1次{n,}:至少 n 次{n,m}:至少 n 次,至多 m 次
默认匹配模式是贪婪模式,即一个匹配结果包含尽可能多的字符。在上述数量词后加上一个 ? 就设置成非贪婪模式,即一个匹配结果包含尽可能少的字符。
★ 另有一条更高优先级的匹配规则:最先开始的匹配拥有最高优先权
{n}:n次(多于 n 时也只匹配n次,无所谓贪婪懒惰)x(?=y):只有当 x 后面紧跟着 y 时,才匹配 x 。x(?!y):只有当 x 后面不紧跟着 y 时,才匹配 x 。x|y:匹配 x 或 y 。

2176

被折叠的 条评论
为什么被折叠?



