0

我制作了这个正则表达式,它在 Ruby 中运行良好:

/(1?[[\(\s\.-]]\d{3}\)?[\s\.-]\d{3}[\s\.-]\d{4}(\z[^\d])?)/

它用于从文本文档中提取电话号码,但现在我在 PHP 中使用相同的表达式,使用preg_match_all. 现在同样的表达式给了我一个空数组。
我不明白为什么会这样

我需要对此表达式进行哪些更改才能使其在 PHP 中工作?

4

1 回答 1

3

您的正则表达式中有一个奇怪的错误。我认为它在 Rubular 上工作部分是幸运的:

(1?[[\(\s\.-]]\d{3}\)?[\s\.-]\d{3}[\s\.-]\d{4}(\z[^\d])?)
   ^         ^

为什么那些括号有两次?

请参阅此处以获取我刚刚删除它们的工作版本。现在可以正常使用 PHP:

http://www.regex101.com/r/gR6kS3/1

(1?[\(\s\.-]\d{3}\)?[\s\.-]\d{3}[\s\.-]\d{4}(\z[^\d])?)
于 2013-06-28T10:09:20.257 回答