PHP正则表达式 - 有效的浮点数

Cha*_*ron 19 php regex

我希望用户只输入0-9并且只输入一次"."

 patt = /[^0-9(.{1})]/

 1.2222 -> true
 1.2.2  -> false (only once '.')
Run Code Online (Sandbox Code Playgroud)

帮帮我,谢谢!

Cor*_*Xii 22

/^-?(?:\d+|\d*\.\d+)$/
Run Code Online (Sandbox Code Playgroud)

这匹配正常的浮点数,例如3.14,仅小数部分的缩写符号,例如.5整数,例如9负数.


use*_*291 21

这就是你要找的东西

$re = "~        #delimiter
    ^           # start of input
    -?          # minus, optional
    [0-9]+      # at least one digit
    (           # begin group
        \.      # a dot
        [0-9]+  # at least one digit
    )           # end of group
    ?           # group is optional
    $           # end of input
~xD";
Run Code Online (Sandbox Code Playgroud)

这只接受"123"或"123.456",而不是".123"或"14e + 15".如果您还需要这些表单,请尝试is_numeric


Gor*_*don 7

正则表达式用于匹配字符串模式.如果在验证输入字符串的格式(但实际值)后没有显式,您也可以使用

filter_var("1.33", FILTER_VALIDATE_FLOAT);
Run Code Online (Sandbox Code Playgroud)

确保输入可以用作浮点值.FALSE如果它不是浮点数,则返回,否则返回浮点数或整数值.适用任何类型的杂耍规则.


Van*_*mex 7

这个正则表达式:

\d*(?:\.\d+)?
Run Code Online (Sandbox Code Playgroud)

将给出结果:

123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true
Run Code Online (Sandbox Code Playgroud)

但是,您必须在使用之前检查输入是否为空,因为正则表达式也允许零长度输入。


Pek*_*ica 3

您可以使用它is_numeric(),但需要注意的是它接受的内容比通常想要的多一点(例如1e4)。