创建正则表达式
“正则表达式”描述在搜索文本正文时要匹配的一个或多个字符串。 正则表达式可用作与要搜索的文本相比较的字符模式。
正则表达式的结构与所创建的算术表达式的结构类似。 较大的表达式可由小的表达式通过使用各种元字符和运算符进行组合而创建。
正则表达式的各组成部分可以是单个字符、字符集、字符范围或在几个字符之间选择。 也可以是这些组成部分的任意组合。
构造正则表达式
通过在一对分隔符之间放置表达式的各种组成部分,就可以构建正则表达式。 在 JScript 中,分隔符是一对正斜杠 (/) 字符,如以下示例所示。
/expression/
正则表达式示例
下表包含典型正则表达式的示例。
正则表达式 |
说明 |
---|---|
/^\s*$/ |
匹配空行。 |
/\d{2}-\d{5}/ |
匹配由两位数字、一个连字符再加五位数字组成的 ID 号。 |
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ |
匹配 HTML 标记。 |
普通字符
最简单的正则表达式是与搜索字符串相比较的单个普通字符。 例如,单字符正则表达式 A 会始终匹配字母 A,无论其会出现在搜索字符串的哪个位置。
以下是 JScript 单字符正则表达式的一些示例。
/a/
/7/
/M/
可以将多个单字符组合起来以形成较长的表达式。 例如,正则表达式 /the/ 会匹配以下搜索字符串中的“the”:“the”、“there”、“other”和“over the lazy dog”。
无需使用任何串联运算符。 只需连续输入字符即可。
元字符
除普通字符之外,正则表达式还可以包含“元字符”。 例如,元字符 \d,它与数字字符相匹配。
有关更多信息,请参见正则表达式语法。
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。 这包括所有大小写字母、所有数字、所有标点符号和一些符号。
匹配任意字符
句点 (.) 可匹配字符串中的任意单个打印或非打印字符,换行符 (\n) 除外。 /a.c/ 正则表达式可匹配“aac”、“abc”、“acc”、“adc”、“a1c”、“a2c”、“a-c”和“a#c”。
若要匹配搜索字符串中包含的句点 (.),则可以在表达式中句点的前面放置一个反斜杠 (\)。 表达式 /filename\.ext/ 匹配“filename.ext”。
匹配字符列表
可以通过在方括号 [ ] 中放置一个或多个单个字符,创建匹配字符的列表。
括号表达式中的任何字符均仅与正则表达式中紧邻括号表达式的单个字符相匹配。 例如,/Chapter [12345]/ 表达式匹配“Chapter 1”、“Chapter 2”、“Chapter 3”、“Chapter 4”和“Chapter 5”。
要使用范围代替字符本身来表示匹配字符,可以使用连字符 (-)。 表达式 /Chapter [1-5]/ 与 /Chapter [12345]/ 等效。
若要查找不在列表或范围内的所有字符,请将插入符号 (^) 放在列表的开头。 例如,表达式 /[^aAeEiIoOuU]/ 匹配任何非元音字符。
有关更多信息,请参见匹配字符的列表。
限定符
可以使用“限定符”指定其中的单个字符或字符集重复指定次数的正则表达式。
限定符引用在其前面并与其紧邻(左侧)的表达式。
限定符位于大括号 {} 中,并包含指示出现次数上下限的数值。 例如,c{1,2} 匹配 1 个或 2 个字母 c。
仅指定一个数字时,除非其后紧跟一个逗号,否则表示上限。 例如,c{3} 匹配 3 个字符 c,而 c{5,} 匹配 5 个或更多字母 c。
还可以使用单字符限定符,如下表所示。
限定符 |
显式限定符 |
含义 |
---|---|---|
* |
{0,} |
匹配上一个元素零次或多次。 |
+ |
{1,} |
匹配上一个元素一次或多次。 |
? |
{0,1} |
匹配前面的元素零次或一次。 |
以下是一些表达式示例及其匹配的搜索字符串。
正则表达式 |
限定符的含义 |
匹配 |
---|---|---|
/Chapter [1-9][0-9]{0,}/ 或 /Chapter [1-9][0-9]*/ |
匹配 [0-9] 零次或多次。 |
“Chapter 1”、“Chapter 25”、“Chapter 401320” |
/Chapter [0-9]{1,2}/ |
匹配 [0-9] 一次或两次。 |
“Chapter 0”、“Chapter 03”、“Chapter 1”、“Chapter 25”、“Chapter 40” |
/Chapter [1-9][0-9]{0,1}/ 或 /Chapter [1-9][0-9]?/ |
匹配 [0-9] 零次或一次。 |
“Chapter 1”、“Chapter 25”、“Chapter 40” |
有关更多信息,请参见 JScript 中的限定符。
行边界和字边界
通过“定位点”,您可以指定正则表达式必须位于搜索字符串的开头或结尾,或者位于搜索字符串中行或字的开头或结尾位置,以形成匹配。 有关更多信息,请参见定位点。
指定替换项
“|”字符指定表示匹配的两个或多个替换项。 例如,JScript 正则表达式 /(Chapter|Section) [1-9]/ 匹配以下内容:“Chapter 1”、“Chapter 9”和“Section 2”。 有关更多信息,请参见替换和子表达式。
使用子匹配项
在正则表达式中使用括号可创建子表达式。 程序可检索生成的子匹配项。 有关更多信息,请参见替换和子表达式。
可以从正则表达式和替换字符串中引用子表达式。 有关更多信息,请参见 JScript 中的反向引用。