首页 > 解决方案 > Preg_match 捕获 dot(.) 超过 3 次

问题描述

如果我想验证我的字符串是否有 3 个或更多点 (.) 我会写这个正则表达式

if(preg_match("/^[\.]{3}+$/", $string){
    echo "Match!";

因为反斜杠表示验证我的点,而 {3} 会说我想要的数字 os 点。如果它有效,那将非常简单。也许我在这里错过了什么?

标签: phpregexpreg-match

解决方案


对于 ascii 范围内的一个字符,您可以使用 count_chars 函数返回一个数组,其中包含每个字符的出现次数:

if ( count_chars($string)[46] > 3 ) {
    ...

46 是点的十进制值。

请注意,为了使其更具可读性,您可以编写:

$char = ord('.');
if ( count_chars($string)[$char] > 3 ) {
    ...

推荐阅读