【笔记】JS的正则表达式

前言

JS的正则表达式

创建正则表达式对象

  • 正则表达式由模式(patterns)和修饰符(flags)两部分组成

通过构造函数

  • 构造函数RegExp()第一个参数字符串表示模式,第二个参数字符串表示修饰符
1
var reg = new RegExp("\d", "igm");

通过字面量

  • 通过在//内定义模式,在//后紧跟修饰符
1
var reg = /\d/igm;

RegExp的实例方法

执行

  • 匹配成功返回结果对象
1
2
3
4
5
var reg = /\d/g;
var str = "1";

var result = reg.exec(str);
console.log(result); // ["1", groups: undefined, index: 0, input: "1", length: 1]
  • 匹配失败返回null
1
2
3
4
5
var reg = /\d/g;
var str = "a";

var result = reg.exec(str);
console.log(result); // null

测试

  • 匹配成功返回true,匹配失败返回false
1
2
3
4
5
var reg = /\d/g;
var str = "1";

var result = reg.test(str);
console.log(result); // true
1
2
3
4
5
var reg = /\d/g;
var str = "a";

var result = reg.test(str);
console.log(result); // false

字符串的实例方法

匹配

  • 匹配成功返回
1
2
3
4
5
var reg = /\d/g;
var str = "12";

var result = str.match(reg);
console.log(result); // ["1", "2"]
  • 匹配失败返回null
1
2
3
4
5
var reg = /\d/g;
var str = "a";

var result = str.match(reg);
console.log(result); // null

匹配所有

  • matchAll()传递的正则表达式的修饰符必须包含g
  • 返回迭代器
1
2
3
4
5
6
var reg = /\d/g;
var str = "1";

var result = str.matchAll(reg);
console.log(result.next()); // { value: "1", done: false }
console.log(result.next()); // { value: undefined, done: true }
1
2
3
4
5
6
7
var reg = /\d/g;
var str = "1";

var result = str.matchAll(reg);
for (const item of result) {
console.log(item); // ["1", groups: undefined, index: 0, input: "1", length: 1]
}

替换

1
2
3
4
5
var reg = /\d/g;
var str = "12";

var result = str.replace(reg, "3");
console.log(result); // 33

替换所有

1
2
3
4
5
var reg = /\d/g;
var str = "12";

var result = str.replaceAll(reg, "3");
console.log(result); // 33

拆分

  • 根据指定正则表达式拆分字符串为字符串数组
1
2
3
4
5
var reg = /\d/g;
var str = "a1b2c";

var result = str.split(reg);
console.log(result); // ["a", "b", "c"]

查找

  • 根据指定正则表达式查找字符串中符合的子串,返回子串的位置,不存在返回-1
1
2
3
4
5
var reg = /\d/g;
var str = "1";

var result = str.search(reg);
console.log(result); // 0

完成