Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 带小数点的正则表达式_Regex - Fatal编程技术网

Regex 带小数点的正则表达式

Regex 带小数点的正则表达式,regex,Regex,我正在尝试用正则表达式验证文本框 regex expression=(\d{0,4})?([\.]{1})?(\d{0,2}) 我对小数点有问题。小数点是可选的。正则表达式应该只验证一个小数点 example 1.00 ,23.22 , .65 is valid 1.. or 23.. is invalid. 有什么改进我的正则表达式的建议吗?试试这个:^\d{1,4}(\.\d{1,2})?$ 它应该匹配: 1 200 9999 12.35 522.4 但不是:

我正在尝试用正则表达式验证文本框

  regex expression=(\d{0,4})?([\.]{1})?(\d{0,2})
我对小数点有问题。小数点是可选的。正则表达式应该只验证一个小数点

    example 1.00 ,23.22 , .65 is valid
    1..  or  23.. is invalid.

有什么改进我的正则表达式的建议吗?

试试这个:
^\d{1,4}(\.\d{1,2})?$

它应该匹配:

1
200
9999
12.35
522.4
但不是:

1000000
65.
.65
10.326
65..12
编辑:

如果你想匹配65。或9999。请改用此选项(请参见注释):

改用应用程序逻辑 虽然您当然可以为此构造一个正则表达式,但检查数据类型或类,或者简单地扫描输入中的小数,然后对其进行计数似乎更简单。例如,使用Ruby:

  • 检查值是否为浮点或整数

    #Literal值是一个float,因此它属于float类。
    值=1.00
    value.class==Fixnum或value.class==Float
    =>正确
    #文字值是一个整数,因此它属于Fixnum类。
    值=23
    value.class==Fixnum或value.class==Float
    =>正确
    
  • 数一数小数,确保不超过一个

    #文字值是一个浮点值。当被转换为字符串并扫描时,
    #只能找到一个小数点。
    数值=23.22
    值。到美国扫描(/\./)。计数为真
    #唯一可能是无效整数或浮点的方法是如果它是字符串。
    #如果您首先接受字符串,只需将所有输入转换为
    #字符串并计算它包含的小数。
    值='1.2.3'
    值。到美国扫描(/\./)。计数为false
    

这将排除
9999。
这可能是需要的,也可能不是需要的,但是如果必要的话很容易修复。嗯,它不应该排除9999:|因为它允许1到4位小数
9999
将通过,但是
9999。
(注意最后的
)不会通过。是的,我没有看到点,但它是为了不匹配(或者应该匹配吗?)。
^\d{1,4}(\.(\d{1,2})?)?$