我嘗試輸入下面的值「f + 11111111111」,並且我的代碼不顯示錯誤消息。我試圖刪除regex2條件,然後它的工作。但是怎麼來?這是一個AND條件,爲什麼它表現得像是一個OR運算符?Javascript正則表達式不會給出錯誤信息,當它應該
function validatePhone()
{
var phone = document.getElementById("phone").value;
var regex1 =/^[\+\d][\s(\-\d][\s()\-\d]{8,}/g;
var regex2 = /\D*(\d\D*){11}/g;
if (!phone.match(regex1) && !phone.match(regex2)) {
producePrompt("Error", "comment_phone_prompt");
return false;
}
}
function producePrompt(message, promptLocation)
{
document.getElementById(promptLocation).innerHTML = message;
}
regex2匹配您的輸入,並且在if條件*(顯然評估爲false)*時使用否定'!'。由於沒有人知道你在做什麼,所以很難幫助你。 –
@CasimiretHippolyte是的,愚蠢的錯誤。需要休息一下。謝謝。 UPD:你已經夠幫了。 – kulan
通過'!'使用'&&',兩個表達式都必須匹配才能輸入'if'的塊。當只有一個不匹配時('true && false'),總體結果爲'false',跳過塊。你可能想用'||'代替(「*如果不匹配,提示錯誤*」)。 –