php - 接受有效 float 的正则表达式 [PHP]

标签 php regex preg-match conditional-statements

我正在尝试验证有效的 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})?)$

Demo

另请注意,[^0] 是一个不正确的正则表达式,因为它将匹配除 0 之外的所有内容,因此它将匹配字符或...

关于php - 接受有效 float 的正则表达式 [PHP],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30010344/

相关文章:

php - preg_match 有字符串大小限制

javascript - 通过 AngularJS 提交的 PHP $_GET 数据

java - 如何在服务器上锁定变量一段时间

javascript - 修改无效的javascript

python - 通过正则表达式或模糊匹配合并 Dataframe

正则表达式拉出 2 个下划线之间的字符串

php - 使用 php mysql 在巨型多维数组中搜索

php - 将值插入数据库无法正常工作?

php - 寻找加载器设计模式

javascript - 如何使用正则表达式检测 CTRL+C 和 CTRL+V 按键?