2016-09-07 2 views
0

У меня есть ниже регулярное выражение, чтобы проверить действительный номер телефона в различных форматах, он также поддерживает арабские цифры:Номер телефона проверка для конкретного формата

/^(\+?\s{0,2}([0-9\u0660-\u0669]{1,3}))?[-,.\s]{0,2}\(?[0-9\u0660-\u0669]{1,5}\)?[-,.\s]{0,2}[0-9\u0660-\u0669]{1,5}[-,.\s]{0,2}[0-9\u0660-\u0669]{1,6}\s{0,2}\+?/ 

Но это возвращающееся ложно для одного из действительного числа +(91)-20-xxxxxxxx

+3

Ваше регулярное выражение не позволяет '(' или ')' –

+2

Вполне нормально, так как у вас нет ничего, чтобы соответствовать '(' или ')'. Вы хотите избежать этих в своем регулярном выражении. – jcaron

+0

ohk, так как я могу изменить это регулярное выражение? –

ответ

1

Первая группа, которая необязательно соответствует + необходим дополнительный ( и ):

^(\+?\(?\s{0,2}[0-9\u0660-\u0669]{1,3}\)?)?[-,.\s]{0,2}\(?[0-9\u0660-\u0669]{1,5}\)?[-,.\s]{0,2}[0-9\u0660-\u0669]{1,5}[-,.\s]{0,2}[0-9\u0660-\u0669]{1,6}\s{0,2}\+? 
    ^^^        ^^^ 

См regex demo

Примечания вы можете повторно проверить шаблон, задний \+? выглядит довольно подозрительно, и нет $ (конца строки якоря) в конце паттерна (если вы планируете, чтобы соответствовать всей строке , вам нужен этот якорь).

Смежные вопросы