从字符串中提取大于4位数的数字php正则表达式

3
preg_match_all('/(\d{4})/', $text, $matches);

使用上述函数,我们可以从给定的字符串中提取确切的4位数字。
如何使用正则表达式提取包含大于4位数字的数字。
是否有办法在正则表达式中指定最小长度?

尝试使用 preg_match_all('/(\d{4,})/', $text, $matches); 这段代码,它能正常工作吗? - Oleg
这在使用PHP从字符串中删除电话号码时非常有帮助。 - Avatar
4个回答

6

是的,您可以指定最小长度:

/(\d{4,})/

花括号语法接受一个数字(如您所用)表示要匹配的确切重复次数,但它还允许通过逗号分隔指定要匹配的最小和最大重复次数。如果省略了最大值(但逗号没有省略),则最大值是无限的。最小值也可以省略,这与明确指定最小值为0相同。

是的,正常工作。 preg_match_all('/(\d {4,})/',$ text,$ matches); $ matches返回2个包含相同结果的数组。 请指导我。 - Muthu Krishnan
@Muthu:抱歉,我不懂PHP(只懂正则表达式)。请问还有其他问题吗?;-) - Cameron
1
数组中的第一个元素是完全匹配,第二个元素是括号内的匹配(第一次捕获)。删除括号以得到数组中的单个元素,或使用任一索引。 - Aram Kocharyan

1
你需要像这样的东西:
\d{4,}

所以:

preg_match_all('#(\d{4,})#', $text, $matches);

请注意,我在这里使用了#作为分隔符,我发现这样更容易查看 :)

它将所有数字分成4个字符。 - Muthu Krishnan

1

\d{4,}

应该可以了。这将设置最小值为4。


1
preg_match_all('/(\d{4,})/', $text, $matches);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接