Reguralexpresion,接受有效浮点数[PHP]
我正在尝试验证一个有效的浮点数。基本上,我希望接受在点或逗号后最多有四个数字的数字:Reguralexpresion,接受有效浮点数[PHP],php,regex,preg-match,conditional,Php,Regex,Preg Match,Conditional,我正在尝试验证一个有效的浮点数。基本上,我希望接受在点或逗号后最多有四个数字的数字: 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}$>"; $t
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;
$number_exp=”“;
$test='01234342';
if(preg_match($number_exp,$test))返回true;
返回false;
任何人都知道如何调节station,使其在且仅当它在分隔符之前独立时才接受0?您所需要的只是使用捕获分组。您可以使用以下正则表达式:
^(([1-9]+|0|[1-9]+?0)([.,][0-9]{0,4})?)$
还要注意,
[^0]
是一个不正确的正则表达式,因为它将匹配除0
之外的所有内容,因此它将匹配字符或…已找到解决方案
$number_exp = "<^([^0][1-9]+)?([0]{1})?[.|,]?[0-9]{0,4}$>";
$number_exp=”“;
但仍然想知道是否有其他方法可以做到这一点 那么:
/^(?:[1-9]\d*|0)(?:[,.]\d[0,4})?$/
说明:
/ : regex delimiter
^ : begining of string
(?: : start non capture group
[1-9] : one digit from 1 to 9
\d* : any number of digits from 0 to 9
| : OR
0 : zero
) : end of group
(?: : start non capture group
[,.] : a comma or a dot
\d[0,4} : 0 to 4 digits
)? : end of group, optional
$ : end of string
/ : regex delimiter
出于某种原因,它将接受$test='0234342'@欢迎光临!还有关于
[^0]
的注意事项!顺便说一句,你在这里发布的正则表达式演示工具包不错。因此,我不会让我接受奇克在一分钟内就会给出的答案。ThxIt不匹配10