php正则表达式检查一个数字是否由5位数组成

cod*_*rex 4 php regex

如何编写正则表达式来检查一个数字是否只包含5位数?

And*_*ore 21

这个正则表达式应该很好地工作:

/^\d{5}$/
Run Code Online (Sandbox Code Playgroud)

这将检查一个字符串是否只包含5个数字.

  • /是分隔符.它是正则表达式的开头和结尾.(用户定义,您可以使用任何字符作为分隔符).

  • ^ 是字符串锚的开始.

  • \d是一个简写[0-9],是一个只匹配数字的字符类.

  • {5}表示重复最后一组或字符5时间.

  • $ 是字符串锚的结束.

  • / 是结束分隔符.


如果要确保该数字不以0开头,可以使用以下变体:

/^[1-9]\d{4}$/
Run Code Online (Sandbox Code Playgroud)

哪里:

  • /是分隔符.它是正则表达式的开头和结尾.(用户定义,您可以使用任何字符作为分隔符).

  • ^ 是字符串锚的开始.

  • [1-9]是一个字符类匹配数字范围从19.

  • \d是一个简写[0-9],是一个只匹配数字的字符类.

  • {4}表示重复最后一组或字符4时间.

  • $ 是字符串锚的结束.

  • / 是结束分隔符.


请注意,使用正则表达式进行此类验证远非理想.


too*_*php 14

此正则表达式将确保该数字不以零开头:

if(preg_match('/^[1-9]\d{4}$/', $number))
    echo "Number is 5 digits\n";
else
    echo "Number is not five digits\n";
Run Code Online (Sandbox Code Playgroud)

但为什么is_numeric()不用呢?

if(is_numeric($number) && $number >= 10000 && $number <= 99999)
    echo "Number is 5 digits\n";
else
    echo "Number is not five digits\n";
Run Code Online (Sandbox Code Playgroud)

或者您甚至可以将其强制转换为整数以确保它只有一个整数值:

if(strval(intval($number)) === "$number" && $number >= 10000 && $number <= 99999)
    echo "Number is 5 digits\n";
else
    echo "Number is not five digits\n";
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 7

试试这个:

^[0-9]{5}$
Run Code Online (Sandbox Code Playgroud)

^$标记开始,并且其中由所述的字符的字符串端[0-9]必须被重复5次.所以这只匹配5位数的数字(但它仍然可以00000).如果您只想允许10000到99999之间的数字:

^[1-9][0-9]{4}$
Run Code Online (Sandbox Code Playgroud)

如果您想允许任何数字最多5位数(0到99999):

^(?:0|[1-9][0-9]{0,4})$
Run Code Online (Sandbox Code Playgroud)

这只是一个非捕获分组,用于零和其他数字之间的交替,具有非零的前导数字.(?:expr)