5

我有包含电话号码和需要捕获的多个 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); 

有一个更好的方法吗?

4

1 回答 1

2

在没有样本输入的情况下查看正则表达式有点困难,但有几个观察结果:

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

  • [\D]与 完全相同\D。它本身就是一个字符类,除非你有更多的字符要包含它,否则它没有被包含在[].

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

  • ,\[\W_]在这里,您似乎想使用字符类,但\会转义第一个[. 如果您确实需要\那里的文字;您需要将其转义,\\因为它是一个特殊字符。

于 2013-08-26T04:20:58.570 回答