JavaScript 正则表达式和RegExp对象
正则表达式是描述字符模式的对象。
JavaScript的RegExp类代表正则表达式,字符串和RegExp都定义了使用正则表达式在文本上执行强大的模式匹配和搜索替换功能的方法。
语法
可以使用RegExp()构造函数来定义正则表达式,如下所示 –
var pattern = new RegExp(pattern, attributes);
or simply
var pattern = /pattern/attributes;
以下是参数的说明:
- pattern - 一个字符串,用于指定正则表达式的模式或另一个正则表达式。
-
attributes - 一个可选的字符串,包含任意的”g”、”i”和”m”属性,它们分别指定全局、不区分大小写和多行匹配。
括号
在正则表达式的上下文中,括号([]
)有特殊的意义。它们用于查找一系列字符。
序号 | 表达式及描述 |
---|---|
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 的任何小写字符。
量词
括号中的字符序列和单个字符的频率或位置可以用特殊字符表示。每个特殊字符都有特定的含义。+、*、? 和 $ 标志都跟在字符序列后面。
序号 | 表达式和说明 |
---|---|
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开头的任意字符串。 |
范例
以下范例更详细解释了如何匹配字符。
Sr.No. | Expression & Description |
---|---|
1 | [^a-zA-Z] 它匹配不包含任何从a到z和A到Z范围的字符的字符串。 |
2 | p.p 它匹配包含p,并在后面跟着任何字符的字符串,然后再跟另一个p。 |
3 | ^.{2}$ 它匹配包含正好两个字符的任何字符串。 |
4 | <b>(.*)</b> 它匹配包含在<b> 和</b> 之间的任何字符串。 |
5 | **p(hp)*** 它匹配包含一个p,后面跟着零个或多个hp序列的字符串。 |
文字字符
编号 | 字符和描述 |
---|---|
1 | 字母数字字符 自身 |
2 | \0 NUL字符(\u0000) |
3 | \t Tab键(\u0009) |
4 | \n 新行(\u000A) |
5 | \v 垂直制表符(\u000B) |
6 | \f 换页符(\u000C) |
7 | \r 回车符(\u000D) |
8 | \xnn 由十六进制数nn指定的拉丁字符;例如,\x0A等同于\n |
9 | \uxxxx 由十六进制数xxxx指定的Unicode字符;例如,\u0009等同于\t |
10 | \cX 控制字符^X;例如,\cJ等同于换行符\n |
元字符
元字符指的是一个由反斜杠前缀的字母字符,它用来给组合提供特殊的含义。
例如,你可以使用 ‘\d’ 元字符来搜索一大笔钱: /([\d]+)000/ ,这里的 \d 将搜索任何数字字符的字符串。
下表列出了一组可在PERL风格正则表达式中使用的元字符。
序号 | 字符&描述 |
---|---|
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) 匹配指定的任意一个替代项 |
修饰符
有几个可用的修饰符,可以简化您使用正则表达式的方式,如大小写敏感、多行搜索等。
序号 | 修饰符和描述 |
---|---|
1 | i 执行不区分大小写的匹配。 |
2 | m 指定如果字符串具有换行符或回车符,那么^和$操作符将匹配换行边界,而不是字符串边界。 |
3 | g 执行全局匹配,即查找所有的匹配项,而不是在第一个匹配项后停止。 |
RegExp属性
下面是与RegExp相关的属性及其描述的列表。
序号 | 属性与描述 |
---|---|
1 | 构造函数 指定创建对象原型的函数。 |
2 | 全局 指示是否设置了”g”修饰符。 |
3 | 忽略大小写 指示是否设置了”i”修饰符。 |
4 | lastIndex 下一次匹配的起始索引。 |
5 | 多行 指示是否设置了”m”修饰符。 |
6 | 源文本 模式的文本。 |
在接下来的几个部分中,我们将提供一些示例来演示RegExp属性的用法。
RegExp方法
以下是与RegExp相关的方法及其说明的列表。
序号 | 方法与描述 |
---|---|
1 | exec() 在字符串参数中执行搜索匹配。 |
2 | test() 在字符串参数中测试匹配。 |
3 | toSource() 返回表示指定对象的对象字面量;您可以使用该值创建一个新对象。 |
4 | toString() 返回表示指定对象的字符串。 |
在接下来的几节中,我们将举几个示例来演示RegExp方法的用法。