3

我想从一段中选择电话号码。但是电话号码的格式是

123-456-7890
123.456.7890
123*456*7890
(202) 553-6381
123_456_7890
1234567890
1.2.3.4.5.6.7.8.9.0
1*2*3*4*5*6*7*8*9*0
954 665 53 92 
456 7890 x123 

我得到了一个正则表达式,但它并非在所有情况下都有效。正则表达式是

$pat1="/(\d)?(0-9)|(\s|-|_|.|)?(\()?(\d){3}(\))?(\s|-|_|.){1}(\d){3}(\s|-|_|.){1}(\d){4}/";
4

2 回答 2

1

它可能不是最好的,但它会匹配所有实例

(\d{3}([\-\.\*\s_]?\d{3})([\-\.\*\s_]?\d{4}))|\d(([\.\*]\d){9})|(\(\d{3}\)\s\d{3}\-\d{4})|(\d{3}\s\d{3}\s\d{2}\s\d{2})|(\d{3}\s\d{4}\sx\d{3})
于 2012-10-16T06:40:48.480 回答
1

一个简单的未压缩正则表达式可以是:

^\d{3}\s\d{3}\s\d{2}\s\d{2}|\d{3}\s\d{4}\sx\d{3}|\d{10}|\(?\d{3}\)?[\s-.*_]\d{3}[-.*_]\d{4}|(\d[*.]){9}\d$

请注意,在最后一行有 x123,如果它是一个四位数字,您必须将正则表达式更改为:

^\d{3}\s\d{3}\s\d{2}\s\d{2}|\d{3}\s\d{4}\s\d{4}|\d{10}|\(?\d{3}\)?[\s-.*_]\d{3}[-.*_]\d{4}|(\d[*.]){9}\d$

另外,^ 表示以开头,$ 表示以结尾。对于某些正则表达式查询,您必须删除它们。

于 2012-10-16T06:52:39.107 回答