正则表达式常用的方法

2018-09-05  本文已影响0人  QinRenMin

当初学习正则表达式没有系统的总结,当再看时知识体系不太完整,在后期学习中会带来一些麻烦,再总结,并且对于一些东西有了新的认知。

  1. 字面量创建
    let re = /正则表达式/标识(修饰符)/
    let re = /cm/g
    2.实例创建法
    let re = new RegExp(正则表达式,修饰符)
    let re = new RegExp('cm')
    两者的区别
    1实例创建法可以拼接字符
    let re = new RegExp('cm'+22)
    2字面量创建不需要转义
    let re = /\d/
    let re = new RegExp('\\d')
  1. est()
    含义:正则匹配字符串,返回布尔值
    写法:正则.test(字符串)
(function(){
    let str = 'abc';
    let re =/a/;
    let re1 =/abc/;
    let re2 =/w/;
    console.log(re.test(str)); //true
    console.log(re1.test(str)); //true
    console.log(re2.test(str)); //false
})();

2.search()
含义:正则匹配字符串,匹配成功返回匹配位置,否则返回-1,相当于indexOf
用法:字符串.search(正则)
注意:正则表达式的默认行为是区分大小写的
如果想要不区分大小写,在后面添加i
匹配成功则返回第一次匹配成功的值

(function () {
    let str = 'asd12zxc2as';
    let re = /S/;
    let re1 = /S/i;
    let re2 = /aS/i;
    console.log(str.search(re)); //-1
    console.log(str.search(re1)); //1
    console.log(str.search(re2)); //0
})();

3.match()
含义:正则匹配字符串,匹配成功返回匹配成功的数组,匹配不成功则返回null
用法:字符串.match(正则)

(function () {
    // let str = '123aa456qq1';
    let str = '1234561';
    let re = /\d/g;
    let re1 = /\d\d/g;
    let re2 = /\d\d\d/g;
    let re3 = /\d{1,5}/g;
    console.log(str.match(re)); //[ '1', '2', '3', '4', '5', '6' ]
    console.log(str.match(re1)); //[ '12', '34', '56' ]
    console.log(str.match(re2)); //[ '123', '456' ]
    console.log(str.match(re3)); //[ '12345', '61' ]
})();

4.exec()
lastIndex :这个属性记录的就是下一次捕获从哪个索引开始。
当未开始捕获时,这个值为0。
如果当前次捕获结果为null。那么lastIndex的值会被修改为0.下次从头开始捕获。
而且这个lastIndex属性还支持人为赋值。

let str = 'abc123cba456aaa789';
let reg = /\d+/g;  //此时加了标识符g
console.log(reg.lastIndex); //未捕获
// lastIndex : 0

console.log(reg.exec(str));
//  ["123", index: 3, input: "abc123cba456aaa789"];
console.log(reg.lastIndex);
// lastIndex : 6
//reg.lastIndex = 18; 修改lastIndex值,可以更改下一次匹配的位置
console.log(reg.exec(str)); 
//[ '456', index: 9, input: 'abc123cba456aaa789' ]
console.log(reg.lastIndex); //12

console.log(reg.exec(str));
 //[ '789', index: 15, input: 'abc123cba456aaa789' ]
console.log(reg.lastIndex); //18

console.log(reg.exec(str)); //null
console.log(reg.lastIndex); //0

console.log(reg.exec(str)); 
//[ '123', index: 3, input: 'abc123cba456aaa789' ]
console.log(reg.lastIndex); //6

5.replace()
含义:正则匹配字符串,用新的字符替换匹配成功的字符,匹配不成功返回原串
用法:字符串.replace(正则)

(function () {
    let str = 'asd12zxc2as';
    let re = /asd/;
    let re1 = /asd/;
    let re2 = /f/;
    console.log(str.replace(re,'q')); //q12zxc2as
    console.log(str.replace(re1,'w')); //w12zxc2as
    console.log(str.replace(re2,'s')); //asd12zxc2as
})();

replace第二个参数可以接收一个回调函数,注意其参数

(function(){
    let str = 'aasdEeAefhghhhce';
    let re = /e+/ig;
    str.replace(re,function(){
        console.log(arguments);
    })
    //{ '0': 'Ee', '1': 4, '2': 'aasdEeAefhghhhce' }
    // { '0': 'e', '1': 7, '2': 'aasdEeAefhghhhce' }
    // { '0': 'e', '1': 15, '2': 'aasdEeAefhghhhce' }
    //参数对应:匹配到的字符(串),下标,原串
    let str1 = 'aasdEeAefhghhhce';
    let re1 = /(e)\1*/ig;
    str1.replace(re1,function(){
        console.log(arguments);
    })
    // { '0': 'Ee', '1': 'Ee', '2': 4, '3': 'aasdEeAefhghhhce' }
    // { '0': 'e', '1': 'e', '2': 7, '3': 'aasdEeAefhghhhce' }
    // { '0': 'e', '1': 'e', '2': 15, '3': 'aasdEeAefhghhhce' }
    //参数对应:匹配到的字符(串),匹配到的首字符,下标,原串
})()

实例方法:test和exec
其他都是字符串方法

上一篇下一篇

猜你喜欢

热点阅读