1.创建JS正则表达式
let reg1 = /abc/g;
let reg2 = new Reg('abc', 'g');
2.JS正则表达式的常用方法
2.1 test
reg1.test(字符串);
查到则返回true,否则返回false。
test方法的注意点
如果表达式带有g修饰符,则每一次test方法都从上一次匹配结束的 位置开始匹配。
例:
let reg1 = /a/g;
let reg1 = /a/g;
let str1 = 'abcad';
let r1 = reg1.test(str1);
console.info(r1); // true
r1 = reg1.test(str1);
console.info(r1);//true
r1 = reg1.test(str1);
console.info(r1);// false
2.2 exec
返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回null。
(1) 如果带g修饰符,继续匹配,会匹配到后面的字符
var str = 'abcdabcb';
var reg = /a/g;
var res = reg.exec(str);
// ["a", index: 0, input: "abcdabcb", groups: undefined]
// ["a", index: 4, input: "abcdabcb", groups: undefined]
(2) 如果不带g修饰符,继续匹配,每次都是从第一位开始匹配
var str = 'abcdabcb';
var reg = /a/g;
var res = reg.exec(str);
// ["a", index: 0, input: "abcdabcb", groups: undefined]
// ["a", index: 0, input: "abcdabcb", groups: undefined]
如果正则表达式包含圆括号,则返回的数组包含多个元素。首先是整个匹配的结果,后面是圆 括号里匹配的结果。
var str = 'abcdabc';
var reg = /(a)b(c)/;
var res = reg.exec(str);
console.log(res);//["abc", "a", "c", index: 0, input: "abcdabc"]
3.字符串相关的正则表达式方法
3.1 search
搜索符合正则的内容,搜索到就返回出现的位置(从0开始,如果匹配的不只一个字母,则返 回第一次出现的位置),如果匹配失败就返回-1。
3.2 match
在字符串中搜索符合正则的内容,搜索成功就返回数组,否则返回null
var str = "abcd";
var reg1 = /a/;
var reg2 = /a/g;
console.log(str.match(reg1));//["a", index: 0, input: "abcd"]
console.log(str.match(reg2)); // ['a']
3.3 repace(正则表达式, 新字符串/replace函数)
(1) 符合正则表达式的,替换成新字符串
varstr = "xxx";
console.log(str.replace('x','y'));//yxx
console.log(str.replace(/x/,'y'));//yxx
console.log(str.replace(/x/g,'y'));//yyy
特殊字符
(2) replace函数
先看个例子:
function replacer(match, a1, a2, a3, index, string) {
console.info('match: ' + match); 5
console.info('a1: ' + a1); // 空
console.info('a2: ' + a2); //5
console.info('a3: ' + a3); //空
console.info('index: ' + index); // 0
console.info('string: ' + string);原字符串
return [a1, a2, a3].join(' ~ ');
}
var str = '5xyz45678%$&^';
var reg = /([^\d]*)(\d*)([^\w]*)/
var res = str.replace(reg, replacer);
console.log(res);//xyz ~ 45678 ~ %$&^
说明:
(1) match 为匹配的字符串
(2) a1为第一个子表达式匹配的字符
(3) a2为第二个子表达式匹配的字符
(3) a3为第三个子表达式匹配的字符
(4) 匹配的索引位置
(5) 完整的字符串
参考文章:
网友评论