为什么用new创建的正则表达式先用test后用exec两个都能正确显示结果,而用//创建一个是ture一个是null呢

来源:2-16 编程练习

weixin_慕村1291783

2020-11-12 15:55:59

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

<!DOCTYPE html><html lang="en">
<head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title></head>
<body>    <script>        var str = '一个"普通字符"在匹配字符串的时候,匹配与它相同的一个字符';        var regexp = /普通字符/g;        var regexp2 = new RegExp('普通字符');        console.log(regexp.test(str));        console.log(regexp2.test(str));        console.log(regexp.exec(str));        console.log(regexp2.exec(str));    </script>
</body>
</html>

写回答

1回答

好帮手慕言

2020-11-12

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

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

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

http://img.mukewang.com/climg/5facf46e09efa47d09210288.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程