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})?)?$