Ich versuche, den folgenden Wert "f + 11111111111" eingeben, und mein Code zeigt keine Fehlermeldung. Ich habe versucht, Regex2 Zustand zu entfernen, und dann hat es funktioniert. Aber wie kommt es? Es ist eine UND-Bedingung, warum verhält es sich wie ein ODER-Operator?Javascript Regex gibt keine Fehlermeldung, wenn es sollte
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 passt auf Ihre Eingabe und Sie verwenden eine Negation '!' In der if-Bedingung * (die offensichtlich als falsch ausgewertet wird) *. Da niemand weiß, was Sie zu tun versuchen, ist es schwierig, Ihnen mehr zu helfen. –
@CasimiretHippolyte ja, dummer Fehler. Müssen eine Pause machen. Vielen Dank. UPD: Du hast schon genug geholfen. – kulan
Mit '&&' mit '!' Müssen beide Ausdrücke nicht übereinstimmen, um den 'if's Block einzugeben. Wenn nur einer nicht übereinstimmt ("true && false"), ist das Gesamtergebnis "false" und der Block wird übersprungen. Sie möchten wahrscheinlich '||' stattdessen mit '!' Verwenden ("* wenn beide nicht übereinstimmen, wird ein Fehler * angezeigt"). –