结果显示不全
来源:2-15 编程练习
qq_慕用6596887
2020-10-12 23:09:19
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>正则表达式</title> </head> <body> <script type="text/javascript"> var str = 'regular expression = regexp'; /*此处写代码*/ var regexp = /(lar exp)+/g; var result; console.log(regexp.test(str)); while (result = regexp.exec(str)){ console.log(result[0]); } </script> </body> </html>
请问为什控制台的结果没有lar exp这一结果。
但执行
var result = regexp.exec(str); console.log(result)
又会返回一个结果。这是为啥?
2回答
同学你好,老师刚才的回答有些问题,同学重新查看下这条回复:
当添加了全局修饰符 g ,这个 regexp 是一个全局正则表达式时,同时使用test()和exec()方法,test()检测到字符串,并返回true,再使用exec()继续检测的时候,它会从上一次检索结束的位置开始进行检索看,如下:
已经检索过的字符中指定的字符处开始检索字符串,此时已经检索过的str了,再使用exec()就找不到符和规则的字符了,所以内容没有输出,可以在str中再添加个“lar exp”查看效果来增加理解,如下:
输出:
祝学习愉快!
好帮手慕鹤
2020-10-13
同学你好,针对问题进行回复:
1、在代码中,while里面的条件result = regexp.exec(str)一直不成立,所以没有进入while里面,执行不了里面的代码。
result一开始并没有被赋值,所以读取到while循环的时候,条件不成立,所以result[0]不会被输出。
2、但执行var result = regexp.exec(str);console.log(result)又会返回一个结果。这是为啥?
这是因为在执行代码的时候,通过exec() 方法检索出来的字符串赋给了新的变量result,此时result已经有了值,所以就能够输出了。
效果修改如下:
输出:
如果帮助到了你,欢迎采纳,祝学习愉快!
相似问题