2-15 编程练习请问这道题的正确写法 ,然后老师回答下我下面代码里面的问题
来源:2-15 编程练习
weixin_慕村1291783
2020-11-12 15:40:04
# 具体遇到的问题
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
<!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 = 'regular expression = regexp'; var regexp = /(lar exp)+/g; console.log(regexp.test(str)); //因为第一次检测的时候 字符串再次匹配的时候会从后面继续找 所以exec返回的是Null 请问如何找到呢 console.log(regexp.exec(str)); //为什么控制台输出的数字 前两项都是“lar exp” 数组下标为1的项代表什么意思 </script></body>
</html>
1回答
同学你好,问题解答如下:
1. 本题要求使用两种方式创建正则,并要求分别使用test和exec方法验证结果,具体实现可参考如下:
2. 问题解答如下:
a)同学的正则中,使用了g修饰符(全局匹配)。最先调用test方法时,可以正常找到符合条件的字符,结果为true;然后再调用exec方法,此时由于是全局匹配,正则会从上一次匹配的结果往后继续匹配,由于后面没有符合条件的字符,所以返回为null。这个过程中,会有一个属性lastIndex,它会记录上次匹配到的位置,然后再次匹配时,会从lastIndex往后继续匹配,匹配完成会更新lastIndex的值,如果结果为null,则会重置lastIndex为0:

以上内容属于原理层面了解即可。
b)同学的正则中,使用了括号,即使用了分组(了解即可),所以结果中,第二位(下标为1)是分组的结果,而第一位则是“整个正则”匹配到的结果,如下:


由于“整个正则”就是“括号”中的内容,所以结果数组第一位、第二位是一样的,都是lar exp。
祝学习愉快!
相似问题