[英]Regex Conditional validation
我有一个输入字段,我想创建一个只接收从 0.00 到 100.00(包括两者)的输入值的正则表达式。 我创建了一个正则表达式检查:
^1?\d{0,2}(\.\d{1,2})?$
但是对于这个,它不仅接受从 0.00 到 100.00 的值,而且还接受从 100.01 到 199.99 的输入。
怎么设置条件,如果点前有三个数字,只能是100,小数部分是00,只有有小数才为0?
因此 100.00、100.0 或 100 是唯一接受超过 99.99 的值,并且 100.01 到 199.99 之间的输入不通过。
以下是一些传递的输入:
100
100.00
100.0
3
0
0.00
5.2
8.21
37.23
以下是一些未通过的:
40.323
100.50
101.50
199.99
40.
100.
这应该有效:
^((?:100(?:\.00?)?)|(?:\d\d?(?:\.\d\d?)?))$
它匹配:
您可以通过直接匹配或与第一个捕获组进行匹配:)
尝试这个:
^(100(\.00?)?|\d\d?)(\.\d\d?)?$
查看现场演示。
正则表达式:
^
= 开始(100|\d\d?)
= 文字100
或 1 或 2 位数字(\.\d\d?)?
= 点然后 1 或 2 位数字,所有可选$
= 结束您可以将 0 - 99 与 1 或 2 个可选小数匹配,或者将 100 与可选.0
或.00
匹配
^(?:\d\d?(?:\.\d\d?)?|100(?:\.00?)?)$
部分模式:
^
字符串开始(?:
非捕获组
\d\d?
匹配 1-2 位数字(?:\.\d\d?)?
可选匹配.
和 1-2 位数字|
或者100(?:\.00?)?
匹配 100 或 100.0 或 100.00)
关闭非捕获组$
字符串结束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.