2013-09-10 3 views
1

Я пытаюсь изучить регулярные выражения для проверки конкретных входных данных. Входы, которые я пытаюсь проверить, состоят из следующих шаблонов:Проверка различных шаблонов

Регулярное выражение, соответствующее следующему образцу телефонных номеров, который может содержать . или - или пробел. Мои данные выглядит следующим образом:

num: 1234567890 name: jack 
num: 123-456-7890 name: john 
num: 123.456.7890 name: jeff 
num: 123 456 7890 name: josh 
num: (123) 456-7890 name: jacob 

Регулярное выражение для сопоставления номера социального страхования, которые могут включать в себя дефис или пробелы между 3-й и 5-й разряд.

ss: 111111111 name: jack 
ss: 111-11-1111 name: john 
ss: 111 11 1111 name: jeff 

Я пробовал \d{3}-?.?\d{3}-?.?\d{4} по телефонам.

И попробовал \d{3}-?\d{2}-?\d{4} для номеров социального страхования.

+1

'.' должно быть экранировано в регулярном выражении. Кроме того, если вы поместите его в класс символов. Например, класс символов, который разделяет цифры, может быть '[.-]'. –

+1

@ArnaudDenoyelle: Это недопустимый класс символов. Обратите внимание, что '-' имеет особое значение ... – Bergi

+0

Почему это неправильно?Посмотрите на ответ Сэмни. Это то, что он использовал, и он работает. –

ответ

2

Чтобы соответствовать части телефонных номеров вы можете использовать ..

\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4} 

Регулярное выражение:

\(   # match '(' 
    ?   # match between zero and one time 
    \d{3}  # match a digit (0-9) (3 times) 
\)   # match ')' 
    ?   # match between zero and one time 
    [-. ]  # match for '-', '.', or ' ' 
    ?   # match between zero and one time 
    \d{3}  # match a digit (0-9) (3 times) 
    [-. ]  # match for '-', '.', ' ' 
    ?   # match between zero and one time 
    \d{4}  # match a digit (0-9) (4 times) 

А для номера социального страхования, что-то вроде ..

\d{3}[- ]?\d{2}[- ]?\d{4} 
1

Для номера телефона, попробуйте следующее:

\(?\d{3}\)?[ .-]?\d{3}[ .-]?\d{4} 

[ .-]? основном говорят "один или ноль" пространства, дефис, или точка.

Для ССН:

\d{3}[ -]?\d{2}[ -]?\d{4} 

[ -]? основном говорят "один или ноль" пространства или дефис.


Но, если честно, а не забота о формате (который может расстроить пользователя, и вы - пытается объяснить различные форматы), в большинстве случаев я бы просто убедиться, что они имеют нужное количество номеров. Вы можете удалить любой нечисловой символ, а затем проверить длину.

Как это сделать, зависит от используемого языка. В JavaScript, это может выглядеть так просто, как:

if(phoneNumber.replace(/\D/g, "").length() === 10){ //valid } 

Затем можно форматировать или использовать его, как вы хотите от этой точки. Вот Javascript пример этого: fiddle ... пример использования определенного формата: fiddle

0

попробовать этот REG EXP

(\(\+?\d+\) |\+?\d+)([ -.]?\d+)* 

Похоже it works по мере необходимости.

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