gpt4 book ai didi

javascript - 正则表达式接受格式为 00.00 的数字

转载 作者:行者123 更新时间:2023-11-28 12:14:18 25 4
gpt4 key购买 nike

在我的 Angular 应用程序中,我尝试在输入字段上设置验证,例如

它应该只接受 2 位数字或点后和点前都有 2 位数字的 float

示例

接受值

3、33、33.3,33.33

最大值可以是 99.99

不接受

33333.3333.333333.33

目前我正在使用

pattern="[+]?((\d{1,2})+(?:[\.][0-9]{0,2})?|\.[0-9]{0,2})$"

它验证点后的两位数,但无法验证点前的两位数,因为它接受 333.33(这是错误的)

我也尝试过

pattern="[+]?(([0-9])+(?:[\.][0-9]{0,2})?|\.[0-9]{0,2})$"

但是同样的事情发生了,它不会验证点之前的两位数字

最佳答案

此模式(\d{1,2})+将匹配 1 - 2 位数字并重复一次或多次。

类似 \.[0-9]{0,2} 的模式也将只匹配一个点,因为数字将匹配 0 - 2 次。

您可以使用 anchor 来断言开始 ^和结束$字符串的。将 1 或 2 位数字与匹配点和 1 或 2 位数字的可选部分相匹配:

^\d{1,2}(?:\.\d{1,2})?$

Regex demo

说明

  • ^断言字符串的开头
  • \d{1,2}匹配数字 1 或 2 次
  • (?: Non capturing团体
    • \.\d{1,2}按字面意思匹配一个点和 1 或 2 位数字
  • )?关闭非捕获组并将其设为可选
  • $断言字符串结尾

如果您想在开头匹配可选的加号,则正则表达式的开头可以是 ^\+?

let pattern = /^\d{1,2}(?:\.\d{1,2})?$/;
let strs = [
"99",
"3",
"33",
"33.3",
"33.33",
"333",
"33.333",
"3.333",
"333.33"
];

strs.forEach((s) => {
console.log(s + " ==> " + pattern.test(s));
});

关于javascript - 正则表达式接受格式为 00.00 的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52810865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com