为什么这个没有错误和警告的语句没有完成?
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
,它搜索 alright
、good
或 fine
,不区分大小写。或者可能是 /\b(?:alright|good|fine)\b/i
,它做同样的事情,但期望单词的两边都有单词边界。
您可以在各种站点测试您的正则表达式,包括 regex101.com。
我正在做一个简单的 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
,它搜索 alright
、good
或 fine
,不区分大小写。或者可能是 /\b(?:alright|good|fine)\b/i
,它做同样的事情,但期望单词的两边都有单词边界。
您可以在各种站点测试您的正则表达式,包括 regex101.com。