我正在制作一个简单的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中的样子:
运行后,这是语句由于某种原因停止的地方。按继续中断并退出语句:
逐步完成,声明继续运行,但跳过了所有(我同意的)重要部分。正如您在此处所看到的,警报正在被跳过,并且语句将继续在else if行:
我的猜测是我的正则表达式搜索(方法,模式或修饰符)是错误的,这就是语句断开的原因。不过,我仍然觉得奇怪,因为正则表达式错误通常会抛出错误或警告,但是这个脚本没有返回。
有人知道为什么这个特定的脚本会破坏吗?任何人都有一个很好的方法来调试不会抛出错误或警告的错误吗?
答案 0 :(得分:1)
你的正则表达式错了。
这一个,例如:/\+alright\i|\+good\i|\+fine\i|\+alright\i/
搜索+alrighti
(字面意思)或+goodi
或+finei
或+alrighti
,因为\+
表示文字+
和\i
表示文字i
。
您可能需要/alright|good|fine/i
,它会搜索alright
,good
或fine
,不区分大小写。或者也许是/\b(?:alright|good|fine)\b/i
,它会做同样的事情,但期望在单词的任何一边使用单词边界。
您可以在各个网站上测试您的正则表达式,包括regex101.com。