Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение для валидации номеров Украины (https://javascript.ru/forum/misc/47195-regulyarnoe-vyrazhenie-dlya-validacii-nomerov-ukrainy.html)

Alex_ya 13.05.2014 14:25

Регулярное выражение для валидации номеров Украины
 
Всем привет!

Есть необходимость проверить на валидность номера телефонов для Украины (мобильные + стационарные).

Использую вот эту регулярку:
/(?<!\w)(?:(?:(?:(?:\+?3)?8\W{0,5})?0\W{0,5})?[34569]\s?\d[^\w,;(\+]{0,5})?\d\W{0,5}\d\W{0,5}\d\W{0,5}\d\W{0,5}\d\W{0, 5}\d\W{0,5}\d(?!(\W?\d))/
(взято из хабры).

При выполнении вылазит ошибка:
Uncaught SyntaxError: Invalid regular expression: /(?>!\w)(?:(?:(?:(?:\+?3)?8\W{0,3})?0\W{0,3})?[34569]\s?\d[^\w,;(\+]{0,3})?\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0,3}\d\W{0, 3}\d\W{0,3}\d(?!(\W?\d))/: Invalid group

Помогите, пожалуйста, преобразовать данную регулярку для JavaScript'a.

depp 13.05.2014 15:19

var str = '+38....'; // номер телефона украины
str.match(/(?:\w)(?:(?:(?:(?:\+?3)?8\W{0,5})?0\W{0,5})?[34569]\s?\d[^\w,;(\+]{0,5})?\d\W{0,5}\d\W{0,5}\d\W{0,5}\d\W{0,5}\d\W{0,5}\d\W{0,5}\d(?!(\W?\d))/)

без негативного просмотра назад с отрицанием.
только это выражение не проверяет валидность номера, а вытаскивает его из строки.


Часовой пояс GMT +3, время: 10:56.