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回答

好帮手慕久久

2020-11-12

同学你好,问题解答如下:

1. 本题要求使用两种方式创建正则,并要求分别使用test和exec方法验证结果,具体实现可参考如下:
http://img.mukewang.com/climg/5facec9d09659f6707910349.jpg
2. 问题解答如下:
a)同学的正则中,使用了g修饰符(全局匹配)。最先调用test方法时,可以正常找到符合条件的字符,结果为true;然后再调用exec方法,此时由于是全局匹配,正则会从上一次匹配的结果往后继续匹配,由于后面没有符合条件的字符,所以返回为null。这个过程中,会有一个属性lastIndex,它会记录上次匹配到的位置,然后再次匹配时,会从lastIndex往后继续匹配,匹配完成会更新lastIndex的值,如果结果为null,则会重置lastIndex为0:
http://img.mukewang.com/climg/5facf18109d7edca06590314.jpg
http://img.mukewang.com/climg/5facf19609748af404950174.jpg
以上内容属于原理层面了解即可。
b)同学的正则中,使用了括号,即使用了分组(了解即可),所以结果中,第二位(下标为1)是分组的结果,而第一位则是“整个正则”匹配到的结果,如下:

http://img.mukewang.com/climg/5facf1f009de069907880315.jpg
http://img.mukewang.com/climg/5facf214098bb84d09410198.jpg
由于“整个正则”就是“括号”中的内容,所以结果数组第一位、第二位是一样的,都是lar exp。

祝学习愉快!

0

0 学习 · 15276 问题

查看课程