您的位置:首页 > Web前端 > JavaScript

JavaScript中的正则表达式

2016-04-06 17:26 429 查看

JavaScript 正则表达式的构成方式

字面量
/pattern/flags


pattern
是表达式文本

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 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息