繁体   English   中英

正则表达式条件验证

[英]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?)?))$

它匹配:

  • X
  • xx
  • x.xx
  • xx
  • xx.x
  • xx.xx
  • 100
  • 100.0
  • 100.00

您可以通过直接匹配或与第一个捕获组进行匹配:)

尝试这个:

^(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM