2013-05-29 1 views
2

В настоящее время я использую механизм проверки jQuery с jQuery 1.10. После того, как заглядывать в сам скрипт проверки (который, номера телефонов является пользовательский тип), я заметил, что он использует следующее регулярное выражение:Телефон Проверка правильности выражения с исключением для TEXT и TEXTTWO

/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/ 

То, что я пытаюсь сделать, это также позволит «TEXT» и " TEXTTWO "в качестве приемлемых значений. Я пробовал:

/^?(TEXT|TEXTTWO)^?([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/ 

... и несколько вариантов темы без успеха.

ответ

2

Хорошо для вас! Но кажется, что есть только одна вещь, которую вы недопонимаете: ^ является анкер — соответствует началу строки — не может быть количественно оценен, например. сделал необязательным через ?, и не имеет смысла появляться после некоторая часть строки уже была сопоставлена, так как тогда это определенно не могло быть началом строки. Попробуйте вместо этого:

/^TEXT|TEXTTWO|([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/ 

Таким образом, вы имели правильную идею с чередованием (|). Обратите внимание, что чередование имеет один из самых низких приоритетов для всех операторов в регулярном выражении, поэтому здесь не требуется группировка.

+0

Ничего себе, я знал, что я был близок с | Селектор! Это имеет смысл (задним числом), и я чувствую, что больше понимаю regexp. Спасибо! – sacredfaith

0

Как об этом:

/^(TEXT|TEXTTWO|([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?)$/ 
Смежные вопросы