正则表达式匹配具有电话号码的文本中正好6个数字的字符串

时间:2013-08-26 04:06:57

标签: php regex

我有自由文本块,包含我需要捕获的电话号码和多个6位数字。这个6位数字有一个可选的','。

6位数字的例子可以是123456,或123,456,但我需要区分电话号码,如1 234 456 8901

我有:

    preg_match_all(",\[\W_][0-9]{3}(?:,)[0-9]{3}[\W_][\D]\d",$html, $value); 

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

在没有样本输入的情况下查看正则表达式有点困难但有几点意见:

  • [0-9]可以替换为\d(因为,您最后已经在使用它了)

  • [\D]\D完全相同。它本身就是一个角色类,除非你有更多的角色要包括它,否则不会被[]括起来。

  • (?:,)应该只是,,因为您既不想捕获它也不具有任何量词

  • ,\[\W_]这里似乎你想要使用字符类,但\会逃避第一个[。如果你真的需要文字\那里;你需要把它作为\\来逃避它,因为它是一个特殊的角色。