我需要帮助在php上对正则表达式应用限制

Mar*_*184 1 php regex limit

我试图找到一个只包含8个数字的数字,这是我已经拥有的代码:

preg_match_all("/([0-9]{8})/", $string, $match)
Run Code Online (Sandbox Code Playgroud)

但这会从长度超过8位的数字字符串中提取8个数字

任何帮助将不胜感激

谢谢

Lig*_*ica 5

我会用\d而不是[0-9].

如果你的字符串应该只包含8位数字

使用^$分别匹配字符串的开头和结尾:

preg_match_all('/^(\d{8})$/', $string, $match)
Run Code Online (Sandbox Code Playgroud)

如果在较大的字符串中,您匹配的数字应该最多为八位数

快速但略带野蛮的方法:

使用\D([^0-9])匹配"not-a-number":

preg_match_all('/^|\D(\d{8})\D|$/', $string, $match)
Run Code Online (Sandbox Code Playgroud)

Lookbehinds/lookaheads可能会让这更好:

preg_match_all('/(?<!\d)(\d{8})(?!\d)/', $string, $match)
Run Code Online (Sandbox Code Playgroud)