我有自由文本块,包含我需要捕获的电话号码和多个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);
有更好的方法吗?
答案 0 :(得分:2)
在没有样本输入的情况下查看正则表达式有点困难但有几点意见:
[0-9]
可以替换为\d
(因为,您最后已经在使用它了)
[\D]
与\D
完全相同。它本身就是一个角色类,除非你有更多的角色要包括它,否则不会被[]
括起来。
(?:,)
应该只是,
,因为您既不想捕获它也不具有任何量词。
,\[\W_]
这里似乎你想要使用字符类,但\
会逃避第一个[
。如果你真的需要文字\
那里;你需要把它作为\\
来逃避它,因为它是一个特殊的角色。