"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'のブロックを入力するために一致しなくてはなりません。 1つだけが一致しない場合( 'true && false')、全体の結果はブロックをスキップして' false'になります。おそらく '!|'を '!'と代わりに使用したいでしょう( "*一致するかどうか、エラーを促す*")。 –