JavaScript 正则表达式和RegExp对象
正则表达式是描述一组字符模式的对象。
JavaScript的 RegExp 类表示正则表达式,而String和RegExp定义了使用正则表达式在文本上执行强大匹配和查找替换功能的方法。
语法
可以使用 RegExp() 构造函数来定义一个正则表达式,如下所示−
var pattern = new RegExp(pattern, attributes);
或简单地
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开头的任何字符串。 |
例子
以下例子更详细地解释了匹配字符。
序号 | 表达式及描述 |
---|---|
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 NULL 字符 (\u0000) |
3 | \t 制表符 (\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相关联的属性及其描述列表。
序号 | 属性&描述 |
---|---|
1 | constructor 指定创建对象的原型的函数。 |
2 | global 指定是否设置了”g”修饰符。 |
3 | ignoreCase 指定是否设置了”i”修饰符。 |
4 | lastIndex 下一次匹配开始的索引。 |
5 | multiline 指定是否设置了”m”修饰符。 |
6 | source 模式的文本。 |
在以下各节中,我们将提供一些示例以演示RegExp属性的使用方法。
正则表达式方法
以下是与RegExp相关联的方法及其描述列表。
序号 | 方法&描述 |
---|---|
1 | exec() 在其字符串参数中执行匹配搜索。 |
2 | test() 在其字符串参数中测试匹配。 |
3 | toSource() 返回表示指定对象的对象文本;您可以使用此值创建新对象。 |
4 | toString() 返回表示指定对象的字符串。 |
在以下各节中,我们将提供一些示例以演示RegExp方法的使用方法。