ES6 - RegExp 正则表达式
正则表达式是描述字符模式的对象。正则表达式通常缩写为"regex"或"regexp"。
JavaScript RegExp 类表示正则表达式,String 和 RegExp 都定义了使用正则表达式对文本执行强大的模式匹配和搜索替换功能的方法。
正则表达式可以定义为 −
var pattern = new RegExp(pattern, attribute); 或 var pattern = /pattern/attributes;
该属性可以具有以下值的任意组合。
Sr.No | 属性 &描述 |
---|---|
1 |
G 全局匹配 |
2 |
I 忽略大小写 |
3 |
M 多行;将开始和结束字符(^ 和 $)视为跨多行工作(即匹配每行的开头或结尾(以 或 分隔),而不仅仅是整个输入字符串的开头或结尾) |
4 |
U Unicode;将模式视为 unicode 代码点序列 |
5 |
Y 粘性;仅从目标字符串中此正则表达式的 lastIndex 属性指示的索引进行匹配(并且不会尝试从任何后续索引进行匹配) |
构造正则表达式
括号
括号 ([]) 在正则表达式中使用时具有特殊含义。它们用于查找字符范围。
Sr.No | 表达 &描述 |
---|---|
1 |
[...] 括号之间的任意一个字符 |
2 |
[^...] 括号之外的任意一个字符 |
3 |
[0-9] 匹配 0 到 9 之间的任意十进制数字 |
4 |
[a-z] 它匹配从小写字母 a 到小写字母 z的任何字符 |
5 |
[A-Z] 它匹配从大写字母 A 到大写字母 Z的任何字符 |
6 |
[a-Z] 它匹配从小写字母 a 到大写字母 的任何字符Z |
上面显示的范围是通用的;您还可以使用范围 [0-3] 来匹配从 0 到 3 的任何十进制数字,或使用范围 [b-v] 来匹配从 b 到 v 的任何小写字符。
量词
括号字符序列和单个字符的频率或位置可以用特殊字符表示。每个特殊字符都有特定的含义。+、*、? 和 $ 标志都遵循字符序列。
Sr.No | 表达式和说明 |
---|---|
1 |
p+ 它匹配任何包含至少一个 p 的字符串。 |
2 |
p* 它匹配任何包含零个或多个 p 的字符串 |
3 |
p? 它匹配任何包含一个或多个p |
4 |
p{N> 它匹配任何包含 N p 序列的字符串 |
5 |
p{2,3> 它匹配任何包含两个或三个 p 序列的字符串 |
6 |
p{2, > 它匹配任何包含至少两个 p 的序列 |
7 |
p$ 它匹配任何以 p 结尾的字符串 |
8 |
^p 它匹配任何以 p 开头的字符串 |
9 |
[^a-zA-Z] 它匹配任何不包含从 a 到 z 和 A 到 Z 的任何字符的字符串 |
10 |
p.p 它匹配任何包含 p 的字符串,后跟任意字符,再后跟另一个 p |
11 |
^.{2}$ 它匹配任何包含两个字符的字符串 |
12 |
<b>(.*)</b> 它匹配任何包含在 <b> 内的字符串和 </b> |
13 |
p(hp)* 它匹配任何包含 p 且后跟零个或多个序列 hp 实例的字符串 |
文字字符
Sr.No | 字符 &描述 |
---|---|
1 |
字母数字 本身 |
2 |
\0 NULL 字符 (\u0000) |
3 |
Tab (\u0009) |
4 |
换行符 (\u000A) |
5 |
\v 垂直制表符 (\u000B) |
6 |
\f 换页符 (\u000C) |
7 |
回车符 (\u000D) |
8 |
\xnn 十六进制数 nn 指定的拉丁字符;例如,\x0A 与 相同 |
9 |
\uxxxx 十六进制数 xxxx 指定的 Unicode 字符;例如,\u0009 与 相同 |
10 |
\cX 控制字符 ^X;例如,\cJ 相当于换行符 |
元字符
元字符只是一个字母字符,前面有一个反斜杠,用于赋予组合特殊含义。
例如,您可以使用 '\d' 元字符搜索一大笔钱:/([\d]+)000/。这里,\d 将搜索任何数字字符串。
下表列出了一组可以在 PERL 样式正则表达式中使用的元字符。
Sr.No | 字符 &描述 |
---|---|
1 |
. 单个字符 |
2 |
\s 空白字符(空格、制表符、换行符) |
3 |
\S 非空白字符 |
4 |
\d 数字 (0-9) |
5 |
\D 非数字 |
6 |
\w 单词字符 (a-z、A-Z、0-9、_) |
7 |
\W 非单词字符 |
8 |
[\b] 文字退格键(特殊情况) |
9 |
[aeiou] 匹配给定集合中的单个字符 |
10 |
[^aeiou] 匹配给定集合之外的单个字符 |
11 |
(foo|bar|baz) 匹配任何替代方案指定 |
RegExp 属性
Sr.No | 属性 &描述 |
---|---|
1 |
RegExp.prototype.flags
包含 RegExp 对象标志的字符串 |
2 |
RegExp.prototype.global
是否针对字符串中的所有可能匹配项测试正则表达式,还是仅针对第一个匹配项测试正则表达式 |
3 |
RegExp.prototype.ignoreCase
在字符串中尝试匹配时是否忽略大小写 |
4 |
RegExp.prototype.lastIndex
是否读取/写入 RegExp 对象的属性。 |
5 |
RegExp.prototype.multiline
是否在多行字符串中搜索 |
6 |
RegExp.prototype.source
模式的文本 |
RegExp 方法
Sr.No | 方法 &描述 |
---|---|
1 |
RegExp.prototype.exec()
在其字符串参数中执行匹配搜索 |
2 |
RegExp.prototype.test()
在其字符串参数中测试匹配 |
3 |
RegExp.prototype.match()
对给定的字符串进行匹配并返回匹配结果 |
4 |
RegExp.prototype.replace()
用新的子字符串替换给定字符串中的匹配项 |
5 |
RegExp.prototype.search()
在给定的字符串中搜索匹配项并返回索引在字符串中找到的模式 |
6 |
RegExp.prototype.split()
通过将字符串分成子字符串,将给定的字符串拆分为数组 |
7 |
RegExp.prototype.toString()
返回表示指定对象的字符串。覆盖 Object.prototype.toString() 方法 |