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

标签 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);

但它也匹配其他的

最佳答案

尝试使用以下模式:

\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/

相关文章:

C++ ostringstream 奇怪的行为

java - 将字符串转换为 HashMap

php - 使用 PHP 从 MySQL 数据库中选择标题、描述和关键字

php - MVC 难题 : How can I solve this problem and keep logic out of the view?

javascript - REGEX:删除以下日期模式末尾的逗号

javascript - 替代 TextArea 对文本进行更多控制?

javascript - 如何通过最接近的匹配文本获取元素?

python - 是否有 Python 模块来解析原始字符串中的换行符符号?

PHP换行符不起作用

php - 查询返回超过 6 个月前的值