2013-06-28 215 views
0

我做了这个表达式,这在Ruby中正常工作:翻译红宝石正则表达式PHP/Perl的正则表达式

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

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

我需要更改此表达式以使其在PHP中工作?

+2

请添加一些样品输入数字的问题也。 – Casper

+0

我同意@Casper。在提问时,您需要提供测试数据并显示预期结果的示例。 –

回答

3

您的Regexp中有一个奇怪的错误。我认为这是运气部分它的工作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])?) 
+0

你真的有一只非常棒的鸟的眼睛。这工作非常好。 – vivekporwal04

+0

实际上不仅在红宝石也是红宝石也很好,所以这是我无法看到括号的原因:P非常感谢。 – vivekporwal04

+1

@ vivekporwal04是的。你有时会被自己的代码蒙蔽。它发生在每个人身上:) – Casper