gpt4 book ai didi

JavaScript 正则表达式匹配无效数字

转载 作者:行者123 更新时间:2023-11-29 17:20:24 25 4
gpt4 key购买 nike

在使用 JavaScript 的 RegEx 验证带小数位的数字时,我得到了不一致的结果。目标是让数字的任意组合后跟一个小数点和另外两个数字。除了以千为单位的数字(无分隔符)外,它工作正常。

这是我使用的表达方式:

^[0-9]+(\.[0-9][0-9])$

有效数字:

10.99
0.75
999.99
5000.99
...etc

无效数字:

1000
.75
0
...etc

问题在于它匹配以千为单位的整数。这是一个内部应用程序,所以我不关心使用额外的分隔符。我已经使用 http://regexpal.com/ 等工具测试了表达式这给了我我需要的结果,所以看起来是 JS 中的某些东西导致了这个问题。

您可以在此处重现该问题: http://jsfiddle.net/hcAcQ/

最佳答案

您需要在 . 之前转义反斜杠,我相信:

^[0-9]+(\\.[0-9][0-9])$

4 位(或更大)数字有效的原因是因为单个反斜杠实际上并没有将 . 转义为句点字符,从而使其充当通配符 "match any character "点。

当你有 3 个或更少的数字时,这会失败,因为没有足够的字符用于正则表达式中的每个匹配项,但是对于 4 个数字它会起作用(一个数字用于第一个字符类,一个用于 . ,另外两个字符类各一个。

转义 \ 将导致 . 实际上被解释为文字 . 字符,正如您可能希望的那样。您也可以将变量定义为正则表达式文字 (MDN example; near the top)这样您就不必处理字符串中的转义 \ 字符:

//instead of new valueFormat = new RegExp('^[0-9]+(\\.[0-9])$');
valueFormat = /^[0-9]+\.[0-9][0-9]$/;

关于JavaScript 正则表达式匹配无效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366660/

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