我尝试输入下面的值“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',跳过块。你可能想用'||'代替(“*如果不匹配,提示错误*”)。 –