RegExp
内置的构造函数,用于创建正则表达式。
<script>
// 构造函数创建正则
let reg = new RegExp('\\d', 'i');
let reg = new RegExp(/\d/, 'i')
// 字面量方式创建正则
// let reg = /(\d)/i;
reg.exec('123');
</script>
// 匹配连续的4个数字
// let reg = /\d\d\d\d/g
// let reg = /\d{4}/g
// let reg = /[0-9]{4}/g
// 匹配连续的4个数字,要求每组数字 第1个数字和第2个数字相同;第3个数字和第4个数字相同
// let str = '0011 2233 4545 6776 8998'
// let reg = /(\d)\1(\d)\2/g
// (\d) 使用小括号,表示 捕获 \d 匹配的那个值
// \1 表示匹配的值,必须和第1个小括号匹配的值相同
// \2 表示匹配的值,必须和第2个小括号匹配的值相同
// console.log(str.match(reg))
// 匹配连续的4个数字,要求14位相同、23位相同
// let reg = /(\d)(\d)\2\1/g
// console.log(str.match(reg))
// 匹配连续的4个数字,要求13位相同、24位相同
// let reg = /(\d)(\d)\1\2/g
// console.log(str.match(reg))
let str = 'ES6 and H5'
// ES666 and H555
let result = str.replace(/(\d)/g, '$1$1$1')
console.log(result)
总结:
- 推荐使用字面量定义正则表达式,而不是
RegExp
构造函数 RegExp
静态属性 $1、$2、$3、… 获取正则分组单元
补充:当使用构造函数创建正则时有两种写法:
<script>
// 使用 // 定义正则
let reg = new RegExp(/\d/);
// 或者使用 '' 定义正则
// 如果使用引号定义正则时,\d、\s、\w
需要多添加一个 \
let reg1 = new RegExp('\\d');
</script>