我正在尝试在 JavaScript 中制作正则表达式,匹配 1-100 之间的数字并包含两位小数。 需要包含在正则表达式中的示例数字:
1
1.1
1.15
0.5
100
100.00
需要排除的数字示例:
101
100.01
100.1
55.999
这是我目前的正则表达式:
^(?:100(?:\.00?)?|\d?\d(?:\.\d\d?)?)$
这也有效,但我还需要包含两个数字后跟一个小数或 100 后跟一个小数,如下所示:
14。
9.
100。
这是因为每次在输入字段中按下按钮时我都会运行正则表达式检查,即使当前正则表达式允许使用像 0.5 这样的数字,我也无法输入它,因为不允许使用 0. 。
最佳答案
您需要在此处使用两个单独的正则表达式,一个用于实时输入验证(正是您在问题中所描述的内容,这将让您输入允许的值),另一个用于最终的“提交时”验证(这将检查整个输入字符串的有效性)。
否则,您将无法输入 0.5
之类的值。
实时输入验证的正则表达式是:
/^(?:100(?:\.0?0?)?|\d\d?(?:\.\d?\d?)?)$/
参见this regex demo 。请注意 ?
量词如何使模式成为可选,尤其是 \.
模式之后的 \d
和 0
。 p>
最终验证从 0.01
到 100
的数字的正则表达式是
/^(?!0*(?:\.0*)?$)(?:100(?:\.00?)?|\d?\d?(?:\.\d\d?)?)$/
参见this regex demo .
关于javascript - 如何在正则表达式中包含一次点作为最后一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67402346/