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]是一个字符类匹配数字范围从1到9.
\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)
试试这个:
^[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)