2013-05-29 2 views
0

У меня есть форма с входом, который следует схеме:номер телефона не Regex работает

pattern='(\+|00)\d{2,3}[-]\d{8,10}' 

пример будет +999-123456789

Я должен сформировать проверить его еще раз, используя JavaScript и попытались преобразовать шаблон в Regex, пример передает шаблон, но не проходит регулярное выражение. Любая идея о том, почему?

var check = /^([00|+])([0-9]{2,3})[-]?([0-9]{8,10})$/; 
+2

Почему бы вам не сделать то же самое чек? '/^(\+|00)\d{2,3}-\d{8,10}$/.test('+999-123456789'); // true' –

+0

http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation –

+0

http://jsfiddle.net/RaKZg/ ваше регулярное выражение, кажется, передает вашу примерную строку, хотя, как сказал @Pointy, он не будет работать с двойными нулями, ведущими – smerny

ответ

1

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

[00|+] 

эквивалентно

[0|+] 

и означает "соответствовать одному символу, либо '0', '|', или '+'." Я думаю, что вы хотите:

var check = /^(00|\+)(\d{2,3})-(\d{8,10)$/; 
0

Вот ваш шаблон перенесена на RegEx: /(\+|00)\d{2,3}-{0,1}\d{8,10}$/. Пример ниже.

var number = '+999-123456789'; 
 

 
if (number.match(/(\+|00)\d{2,3}-{0,1}\d{8,10}$/)) { 
 
    alert('Phone number valid!'); 
 
} else { 
 
    alert('Phone number invalid.'); 
 
}

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