创建方式
-
字面量形式创建
/pattern/attributes
-
构造函数的方式创建
new RegExp(pattern, attributes);
- 参数
pattern
是一个字符串,指定了正则表达式的模式或其他正则表达式。 - 参数
attributes
是一个可选的字符串,包含属性 “g”、“i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果pattern
是正则表达式,而不是字符串,则必须省略该参数。
// 1. 字面量形式创建 /pattern/attributes
var reg = /a/ig
// 2. 构造函数的方式创建 new RegExp(pattern, attributes);
var reg = new RegExp("^a","gm");
var str = "ab AB1Ab\naB1239ab";
// 3. 构造函数复制之前的正则对象
var reg1 = new RegExp(reg); // 创建一个新的地址,然后保存值
var reg2 = RegExp(reg); // 拷贝的是一个地址
使用方式
reg.test(str)
: // 检验字符串是否有符合正则条件的字符串片段,返回 true/false
reg.exec(str)
: // 检索字符串中指定的值。返回找到的值,并确定其位置
str.match(reg)
: // 返回符合正则表达式的字符串片段
reg.lastIndex
(可读写) 标示开始下一次匹配的字符位置 跟reg.exec()
协调使用
var str = "abababa";
var reg = /ab/g;
console.log(reg.exec(str));
console.log(reg.lastIndex);
console.log(reg.exec(str));
console.log(reg.lastIndex);
console.log(reg.exec(str));
console.log(reg.lastIndex);
// 也可以手动设置 lastIndex
reg.lastIndex = 0;
console.log(reg.lastIndex);
console.log(reg.exec(str));
console.log(reg.lastIndex);
组合 []
表达式 | 介绍 |
---|---|
[adgk] | 查找给定集合内的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
边界
- ^ 以什么开头 /^a/.test(“ba”)
- $ 以什么结尾 /a$/.test(“ba”)
- 注意:^在[]中表示 非 例如:/[^a]/.test(“b”)
量词
- * 重复零次或更多 >=0
- + 重复一次或更多次 >=1
- ? 重复零次或一次 (0 || 1) /[a-z]?/.test(“aa”)
- {n} n次 (x=n) /[1-9]{5}/.test(“1234”)
- {n,} 重复n次或更多 (x>=n) “a123b4567”.match(/[0-9]{2,}/g)
- {n,m} 重复出现的次数比n多但比m少 (n<=x<=m) /[0-9]{3,5}/.test(“a123bcd”)
- x|y x或者y
- () 完全匹配
- /a{1,3}?/ 能取1个不取三个 打破贪婪匹配
元字符
名称 | 含义 |
---|---|
. | 任何东西,除了换行和行结束符。 |
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |