使用php检查字符串是否包含10位数字但每位数字后有空格

时间:2018-09-27 07:49:30

标签: php regex string preg-match

假设

$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);

但它也与其他人匹配

3 个答案:

答案 0 :(得分:0)

尝试使用以下模式:

\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

也就是说,我们需要确保第一位和最后一位数字本身实际上是一位数字,而不是大数字的一部分。

答案 1 :(得分:0)

尝试一下!

正则表达式:

(?:[0-9][ ]){10}

通过regex101验证:

enter image description here

答案 2 :(得分:0)

您的正则表达式在第一个数字前匹配空格,这就是问题

[0-9 ]{20}

要通过从[0-9]开始进行更正,可以将第一个匹配项强制为数字,并调整9号后跟数字([ ][0-9])的空格。

[0-9](?:[ ][0-9]){9}

demo