为什么这个没有错误和警告的语句没有完成?

Why does this error- and warning-free statement not complete?

我正在做一个简单的 JavaScript 用于打开与假设的招聘人员的对话。当我 运行 脚本时,它没有完成,但也没有抛出任何错误或警告。至少 (!) 它似乎没有完成,但可能是我没有直接考虑如何使用 Firebug.

代码如下:

var str = prompt("How are you today?", "I'm quite alright, thank you")
if (str.search(/\+alright\i|\+good\i|\+fine\i|\+alright\i/) != -1)                                                          {
  alert("I'm very glad to hear that! Me, I'm feeling freaky today!");                                               
} else if (str.search(/\+not/&&(/\+well|\+good/)||(/\+sad|\+down|\+blue/)) != -1)                                           {
  if (confirm("I'm sorry to hear that! Perhaps you'd like to get together and talk sometime?"))                         {
    var sadNumber = prompt("What's your phone number? (The one entered is mine, feel free to call me!)", "072-");
    if (sadNumber.search(/\D/) != -1) {
      alert("Sorry, I think there's something wrong with your number. Try entering it with just numbers please!");
      sadNumber = prompt("What's your phone number? (The one entered is mine, feel free to call me!)", "072-");
    } else {
      alert("That's fine! Let's move on with our job questions, shall we?");
    }
  } else if (alert("Wow! I didn't expect that answer! Truly interesting"));
}

尝试过的方法

这是 Firebug 中的样子:

在 运行ning 之后,由于某种原因,语句在这里停止。按继续中断并跳出语句:

单步执行,语句继续到 运行,但跳过所有(我认为)重要部分。正如您在此处看到的,警报被跳过,语句在 else if 行继续:

我猜我的正则表达式搜索(方法、模式或修饰符)是错误的,这就是语句中断的原因。不过,我仍然觉得很奇怪,因为正则表达式错误通常会引发错误或警告,但是这个脚本 returns none.

有人知道为什么这个特定的脚本会出错吗?谁有好的调试方法,不会引发错误或警告?

你的正则表达式是错误的。

这一个,例如:/\+alright\i|\+good\i|\+fine\i|\+alright\i/ 搜索 +alrighti(字面意思)或 +goodi+finei+alrighti,因为 \+ 表示文字 +\i 表示文字 i.

您可能指的是 /alright|good|fine/i,它搜索 alrightgoodfine,不区分大小写。或者可能是 /\b(?:alright|good|fine)\b/i,它做同样的事情,但期望单词的两边都有单词边界。

您可以在各种站点测试您的正则表达式,包括 regex101.com