JavaScript Irish Mobile Regex

117
14

Я пытаюсь проверить форму, чтобы проверить среди прочего, что пользователь добавил действительный ирландский мобильный, который должен начинаться с 083,085,086,087,089 и иметь десять цифр в длину

Я посмотрел на Validate ирландский номер мобильного телефона, но я не могу заставить его работать

Моя функция проверки

function CheckPhone(pNumb) {   
var paswd=/08[3679]-\d{0,10}$/;
return paswd.test(pNumb);}

Где я пытаюсь проверить

if(!CheckPhone(d))
{
alert("You have not entered a valid Irish mobile number");
document.getElementById('phoneNumber').focus();
return false;
}

Но даже с действительным номером мне говорят, что запись недействительна. Я уверен, что я сделал что-то неправильно, но я новичок в регулярном выражении, а не программист, поэтому не уверен, что.

В ответ на Jayce444 я отредактировал свой вопрос, чтобы включить полный скрипт, поскольку когда я добавляю функцию контрольного телефона, он игнорирует функции электронной почты и пароля, а форма отправляется с недопустимыми значениями, присутствующими для этих полей, такими как test @test и p2 для пароля

<script>

function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
function CheckPassword(inputtxt) {
var paswd=/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$/;
return paswd.test(inputtxt);
}
function CheckPhone(pNumb) {
var paswd=08[3679]-\d{7}$;
return paswd.test(pNumb);
}
function validateForm() {
var a=document.forms["subForm"]["firstName"].value;
if (a===null || a==="")
{
alert("All fields in the form are required You must enter your first name");
document.getElementById('firstName').focus();
return false;
}
var b=document.forms["subForm"]["lastName"].value;
if (b===null || b==="")
{
alert("All fields in the form are required You must enter your last name");
document.getElementById('lastName').focus();
return false;
}
var c=document.forms["subForm"]["email"].value;
if (c===null || c==="")
{
alert("All fields in the form are required You must enter your email address");
document.getElementById('email').focus();
return false;
}
if(validateEmail(c)===false)
{
alert("You must enter a valid email address");
document.getElementById('email').focus();
return false;
}
var d=document.forms["subForm"]["phoneNumber"].value;
if (d===null || d==="")
{
alert("All fields in the form are required You must enter your phone number");
document.getElementById('phoneNumber').focus();
return false;
}
if(CheckPhone(d)===false)
{
alert("You have not entered a valid Irish mobile number");
document.getElementById('phoneNumber').focus();
return false;
}
var e=document.forms["subForm"]["password"].value;
if (e===null || e==="")
{
alert("All fields in the form are required You must enter a password");
document.getElementById('password').focus();
return false;
}
if(CheckPassword(e)===false)
{
alert("You have not entered a valid password");
document.getElementById('password').focus();
return false;
}

}
</script>

спросил(а) 2017-10-15T01:39:00+03:00 3 года, 1 месяц назад
1
Решение
72

Это регулярное выражение работает:

08[3679]-\d{7}$

Btw этот сайт: https://regex101.com/ хорош, чтобы помочь тестировать регулярные выражения и посмотреть, что они на самом деле делают. Вторая часть вашей, \d{0,10} говорит "соответствует от 0 до 10 цифр". То, что вы хотите, должно соответствовать точно 7 цифрам после тире.

ответил(а) 2017-10-15T01:45:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема