Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有包含电话号码和需要捕获的多个 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-9]可以替换为\d(因为你最后已经在使用它了)
[0-9]
\d
[\D]与 完全相同\D。它本身就是一个字符类,除非你有更多的字符要包含它,否则它没有被包含在[].
[\D]
\D
[]
(?:,)应该只是,因为您既不想捕获它,也不想它有任何量词。
(?:,)
,
,\[\W_]在这里,您似乎想使用字符类,但\会转义第一个[. 如果您确实需要\那里的文字;您需要将其转义,\\因为它是一个特殊字符。
,\[\W_]
\
[
\\