Я пытаюсь ввести следующее значение «f + 11111111111», и мой код не отображает сообщение об ошибке. Я попытался удалить условие regex2, а затем он сработал. Но как получилось? Это условие И, почему оно действует, как оператор OR?Javascript regex не дает сообщения об ошибке, когда он должен
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 », пропускающий блок. Вероятно, вы захотите использовать '||' вместо '!' ("* Если они не совпадают, вызывают ошибку *"). –