假设
$str = "hi hello 1 2 3 4 5 6 7 8 9 0 ok"
所以匹配找到了。我试过像这样的正则表达式
preg_match_all('/[0-9 ]{20}/', $str, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
但它也匹配其他的
最佳答案
尝试使用以下模式:
\b[0-9](?: [0-9]){9}\b
您更新后的代码:
$str = "hi hello 1 2 3 4 5 6 7 8 9 0 ok";
preg_match_all('/\b[0-9](?: [0-9]){9}\b/', $str, $matches, PREG_OFFSET_CAPTURE);
print_r($matches[0][0]);
Array ( [0] => 1 2 3 4 5 6 7 8 9 0 [1] => 9 )
在模式两边放置单词边界 (\b
) 的原因是为了防止沿着以下行的错误匹配
10 2 3 4 5 6 7 8 9 0
1 2 3 4 5 6 7 8 9 012
也就是说,我们需要确保第一个和最后一个数字本身实际上是单个数字,而不是更大数字的一部分。
关于php - 使用 php 检查字符串是否包含 10 位数字但每个数字后有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531989/