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

时间:2016-02-12 06:03:37

标签: javascript regex debugging firebug

我正在制作一个简单的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中的样子:

运行后,这是语句由于某种原因停止的地方。按继续中断并退出语句:

Step debugging in Firebug halted at line 9

逐步完成,声明继续运行,但跳过了所有(我同意的)重要部分。正如您在此处所看到的,警报正在被跳过,并且语句将继续在else if行:

Step debugging in Firebug halted at line 11

我的猜测是我的正则表达式搜索(方法,模式或修饰符)是错误的,这就是语句断开的原因。不过,我仍然觉得奇怪,因为正则表达式错误通常会抛出错误或警告,但是这个脚本没有返回。

有人知道为什么这个特定的脚本会破坏吗?任何人都有一个很好的方法来调试不会抛出错误或警告的错误吗?

1 个答案:

答案 0 :(得分:1)

你的正则表达式错了。

这一个,例如:/\+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