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}了社会安全号码。

4

3 回答 3

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}
于 2013-09-10T15:06:39.637 回答
1

对于电话号码,试试这个:

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

[ .-]?基本上是在说空格、连字符或点的“一或零”。

对于ssn:

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

[ -]?基本上是在说空格或连字符的“一或零”。


但老实说,而不是关心格式(这可能会让用户和你感到沮丧 - 试图考虑各种格式),在大多数情况下,我宁愿确保他们有正确数量的数字。您可以删除任何非数字字符,然后检查长度。

如何做到这一点取决于所使用的语言。在 javascript 中,它看起来很简单:

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

然后,您可以根据需要格式化或使用它。这是一个 javascript 示例:fiddle ... 使用特定格式的示例:fiddle

于 2013-09-10T15:05:23.440 回答
0

试试这个正则表达式

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

看起来它可以按要求工作。

于 2013-09-10T15:11:28.007 回答