exec()方法的结果怎么是null

来源:2-16 编程练习

曼曼前端

2021-04-23 19:40:27

var str='一个"普通字符"在匹配字符串的时候,匹配与它相同的一个字符';

    var regexp1=/\"普通字符\"/g;

    var regexp2=new RegExp('\\"普通字符\\"','g');

    var result1=regexp1.test(str);

    var result2=regexp2.test(str);

    var arr1=regexp1.exec(str);

    var arr2=regexp2.exec(str);

    console.log(result1);

    console.log(result2);

    console.log(arr1);

    console.log(arr2);


写回答

1回答

好帮手慕慕子

2021-04-24

同学你好,这是因为使用了全局匹配,改变了正则匹配的起始位置。

第一次匹配之后,lastIndex为7,下次匹配时,是从位置7之后进行匹配,后面没有普通字符四个字了,所以出现了null。

建议:可以手动的调整lastIndex ,这个属性是用于规定下次匹配的起始位置。代码参考:

http://img.mukewang.com/climg/608377a6097264eb10080457.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程