教程 > ES6 教程 > ES6 基础 阅读:48

ES6 正则表达式 RegExp

正则表达式是描述字符模式的对象。 正则表达式通常缩写为“regex”或“regexp”。

JavaScript RegExp 类表示正则表达式,String 和 RegExp 都定义了使用正则表达式对文本执行强大的模式匹配和搜索替换功能的方法。

正则表达式可以定义为

var pattern = new RegExp(pattern, attributes); 
// 或者 
var pattern = /pattern/attributes;

该属性可以具有以下值的任意组合。

序号 属性 说明
1 G 全局匹配
2 I Ignore case
3 M 多行; 将开始和结束字符(^ 和 $)视为处理多行(即,匹配每行的开头或结尾(由 \n 或 \r 分隔),而不仅仅是整个输入字符串的开头或结尾 )
4 U 统一码; 将模式视为一系列 unicode 代码点
5 Y 仅匹配目标字符串中此正则表达式的 lastIndex 属性指示的索引(并且不会尝试匹配任何后续索引)

构造正则表达式

括号

方括号 [] 在正则表达式上下文中使用时具有特殊含义。 它们用于查找一系列字符。

序号 表达式 说明
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 开头的字符串
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 的零个或多个实例的字符串

文字字符

序号 字符 说明
1 Alphanumeric 本身
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

RegExp 属性

序号 属性 说明
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 方法

序号 方法 说明
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() 方法

查看笔记

扫码一下
查看教程更方便