作者:榴莲味蛋筒 | 来源:互联网 | 2024-11-12 11:48
正则表达式字符模板
- * 匹配前一个字符0次到多次
- + 匹配前一个字符1次到多次
- ? 匹配前一个字符0次或1次
var str = "0abcde0123";
var reg1 = new RegExp('0', 'g');
// 等价于
var reg2 = /0/g;
// 正则.test(字符串) ,若查找到返回true,否则返回false
console.log(reg1.test(str)); // true
console.log(reg2.test(str)); // true
// 字符串.match(正则) ,成功返回匹配到的内容,失败返回null
console.log(str.match(reg1)); // ["0", "0"]
console.log(str.match(reg2)); // ["0", "0"]
// 字符串.replace(正则, 新字符串/回调函数),将匹配到的内容替换为新字符串或通过回调函数处理
console.log(str.replace(reg1, "k")); // kabcdek123
// 每次匹配成功时执行回调函数
var len = 0;
var newstr = str.replace(/[123456789]/g, function(a) {
if (a <3) {
len += 1;
}
});
console.log(len); // 2
// search() 在字符串中搜索符合正则的内容,返回第一次出现的位置,找不到返回-1
console.log(str.search(/[123456789]/)); // 7 (1的下标为7)
console.log(str.search(/[qw]/)); // -1 (找不到返回-1)
// exec() 方法返回一个数组,包含匹配结果及其位置信息
var s1 = "12aabbcc3";
var r1 = /[123]/;
console.log(r1.exec(s1)); // ["1", index: 0, input: "12aabbcc3", groups: undefined]
console.log(r1.exec(s1)); // ["1", index: 0, input: "12aabbcc3", groups: undefined]
console.log(r1.exec(s1).length); // 1
console.log(r1.exec(s1)[0]); // 1
console.log(r1.exec(s1).index); // 0
console.log(r1.exec(s1).input); // 12aabbcc3
// 使用全局标志 g 时,exec() 会从上次匹配结束的位置继续查找
var s2 = "12aabbcc3";
var r2 = /[123]/g;
console.log(r2.exec(s2)); // ["1", index: 0, input: "12aabbcc3", groups: undefined]
console.log(r2.exec(s2)); // ["2", index: 1, input: "12aabbcc3", groups: undefined]
// 包含捕获组的正则表达式
var s3 = "12aabbcabc3";
var r3 = /(a)(b)/g;
console.log(r3.exec(s3)); // ["ab", index: 2, input: "12aabbcabc3", groups: undefined]
console.log(r3.exec(s3)); // ["ab", index: 6, input: "12aabbcabc3", groups: undefined]