<?php
$string = '395095427174400_558374047513203';
if(preg_match("/^[0-9][_][0-9]$/",$string)){
echo "True";
}else{
echo "False";
}
?>
为什么我的正则表达式在数字之间不匹配和下划线?
<?php
$string = '395095427174400_558374047513203';
if(preg_match("/^[0-9][_][0-9]$/",$string)){
echo "True";
}else{
echo "False";
}
?>
为什么我的正则表达式在数字之间不匹配和下划线?
您regex
确实匹配数字之间的下划线,即单个数字。
/^[0-9][_][0-9]$/
^ # Start of line
[0-9] # A single digit
[_] # An underscore
[0-9] # A single digit
$ # End of line
你想用来+
匹配一个或多个数字:
/^[0-9]+_[0-9]+$/
^ # Start of line
[0-9]+ # One or more digit
_ # An underscore
[0-9]+ # One or more digit
$ # End of line
您需要quantifier
在digits
. underscore
而且您实际上并不需要underscore
在character class
.
你可以试试这个正则表达式: -
/^[0-9]+_[0-9]+$/
在您的模式中^
并$
限制正则表达式引擎匹配整个字符串,并且您周围有多个数字,_
因此您的模式失败。添加+
with[0-9]
将解决此问题,因为其他专家建议如下:
/^[0-9]+_[0-9]+$/
此外,我不建议在处理数字时使用字符类,正则表达式引擎支持\d
此目的。
像这样简化你的模式:
/^\d+_\d+$/
此外,如果您非常确定下划线只能出现在数字之间(而不是开始和结束),您甚至可以像这样更简化它:
/^_|\d+$/