正则表达式和RegExp对象
正则表达式是描述字符模式的对象。
JavaScriptRegExp类表示正则表达式,并且String和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]匹配范围从0到3的任何小写字符b到v.
量词
方括号字符序列和单个字符的频率或位置可以用特殊字符表示。每个特殊字符都有特定的含义。 +,* 、?和$标志都遵循一个字符序列。
序号. | 表达与说明 |
---|---|
1 | p+ 它匹配包含一个或多个p的任何字符串。 |
2 | p* 它匹配包含零个或多个p的任何字符串。 |
3 | p? 它与最多包含一个p的任何字符串匹配。 |
4 | p{N} 它与包含以下序列的任何字符串匹配Np's |
5 | p{2,3} 它匹配包含两个或三个p的序列的任何字符串。 |
6 | p{2, } 它匹配包含至少两个p的序列的任何字符串。 |
7 | p$ 它匹配任何以p结尾的字符串。 |
8 | ^p 它匹配任何以p开头的字符串。 |
例子
以下示例说明了有关匹配字符的更多信息。
序号. | 表达与说明 |
---|---|
1 | [^ a-zA-Z] 它匹配不包含以下任何字符的任何字符串athroughzandA通过Z。 |
2 | p.p 它匹配任何包含以下内容的字符串p,然后是任何字符,然后是另一个字符p. |
3 | ^.{2}$ 它与包含正好两个字符的任何字符串匹配。 |
4 | (。*) 它匹配和中包含的任何字符串。 |
5 | p(hp)* 它匹配任何包含p然后是该序列的零个或多个实例hp. |
文字字符
序号. | 字符和描述 |
---|---|
1 | 字母数字 表示字母数字 |
2 | \0 NUL字符(\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) 匹配指定的任何替代方案 |
修饰符
提供了几个修饰符,可以简化你的使用方式regexps,例如区分大小写,多行搜索等。
序号. | 修饰符和说明 |
---|---|
1 | i 执行不区分大小写的匹配。 |
2 | m 指定如果字符串具有换行符或回车符,则^和$运算符现在将与换行符边界匹配,而不是与字符串边界匹配 |
3 | g 执行全局匹配,即查找所有匹配,而不是在第一个匹配之后停止。 |
RegExp属性
这是与RegExp相关联的属性及其描述的列表。
序号. | 属性和说明 |
---|---|
1 | constructor() 指定创建对象原型的函数。 |
2 | global 指定是否设置了“ g”修饰符。 |
3 | ignoreCase 指定是否设置了“ i”修饰符。 |
4 | lastIndex 下一场比赛开始的索引。 |
5 | multiline 指定是否设置了“ m”修饰符。 |
6 | source 模式的文字。 |
在以下各节中,我们将通过一些示例来演示RegExp属性的用法。
RegExp方法
这是与RegExp相关联的方法的列表以及它们的描述。
序号. | 方法与说明 |
---|---|
1 | exec() 搜索其字符串参数中的匹配项。 |
2 | test() 测试其字符串参数是否匹配。 |
3 | toSource() 返回表示指定对象的对象文字;你可以使用此值创建一个新对象。 |
4 | toString() 返回表示指定对象的字符串。 |
在以下各节中,我们将通过一些示例来演示RegExp方法的用法。