【发布时间】:2018-12-15 20:01:04
【问题描述】:
下面的代码总是导致死循环,我也不知道为什么。
var regex1 = /Hi([^]*?)Hi/g
var str = `
Hi my name is Hi
`;
function doStuff(str) {
var lastMatchIndex = 0
while ((m = regex1.exec(str)) !== null) {
console.log("it's not null")
//firstblock is the content between the 2 hi's
var firstblock = m[1] || ""
if (firstblock !== "") {
console.log(doStuff(firstblock))
}
}
return str
}
doStuff(str)
我会假设 while 循环会发生一次,firstblock 将等于“我的名字是”。当我调用console.log(doStuff(firstblock)) 时,将没有匹配项,因此不会执行while 循环,它会在屏幕上打印“my name is”。怎么了?
我将附上一个示例,但它可能会导致您的浏览器选项卡崩溃。被警告。 :)
【问题讨论】:
标签: javascript regex loops while-loop infinite-loop