我制作了这个正则表达式,它在 Ruby 中运行良好:
/(1?[[\(\s\.-]]\d{3}\)?[\s\.-]\d{3}[\s\.-]\d{4}(\z[^\d])?)/
它用于从文本文档中提取电话号码,但现在我在 PHP 中使用相同的表达式,使用preg_match_all
. 现在同样的表达式给了我一个空数组。
我不明白为什么会这样
我需要对此表达式进行哪些更改才能使其在 PHP 中工作?
我制作了这个正则表达式,它在 Ruby 中运行良好:
/(1?[[\(\s\.-]]\d{3}\)?[\s\.-]\d{3}[\s\.-]\d{4}(\z[^\d])?)/
它用于从文本文档中提取电话号码,但现在我在 PHP 中使用相同的表达式,使用preg_match_all
. 现在同样的表达式给了我一个空数组。
我不明白为什么会这样
我需要对此表达式进行哪些更改才能使其在 PHP 中工作?
您的正则表达式中有一个奇怪的错误。我认为它在 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])?)