我正在尝试验证有效的 float 。基本上我想接受点或逗号后最多有四个数字的数字:
0,2342
123412,2300
1234.0000
1244
1234,12
1234.12
0.23
我还想拒绝带有前导零的数字,但如果 0 单独位于点或逗号之前,则传递 0。
01234,1234
00012.2342
01,1234
我使用了这个表达式,但这并没有像我预期的那样工作:
$number_exp = "<^[0]?([^0][0-9]+)?[.|,]?[0-9]{0,4}$>";
$test = '0123,4342';
if(preg_match($number_exp, $test)) return true;
return false;
有人知道如何条件语句,以便当且仅当它在分隔符之前单独存在时它才会接受 0 吗?
最佳答案
您所需要的只是使用捕获分组。您可以使用以下正则表达式:
^(([1-9]+|0|[1-9]+?0)([.,][0-9]{0,4})?)$
另请注意,[^0]
是一个不正确的正则表达式,因为它将匹配除 0
之外的所有内容,因此它将匹配字符或...
关于php - 接受有效 float 的正则表达式 [PHP],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010344/