gpt4 book ai didi

javascript - 正则表达式匹配字符串是否包含带有数字的整数/小数

转载 作者:行者123 更新时间:2023-11-28 15:02:31 26 4
gpt4 key购买 nike

我想编写一个正则表达式,它允许整数或具有 0 - 2 个小数位的小数。

有效输入

1
1.
1.1
1.11
111111111
111111111.
111111111.1
111111111.11

输入无效

a
a.
1.a
1.111
1.1111
  • 字符串允许任意数量的数字字符,但仅允许 1 位小数/句点
  • 如果存在句点/小数点:小数点后仅允许 2 位数字字符

这是我想出的正则表达式

\d*\.?([\d]){0,2}

我在测试它以确保其正常工作时遇到问题。我找到了几种测试它的方法。使用我刚刚的 test 方法used w3schools setup here 。另一种方法是使用一些 javascript 正则表达式测试器,例如 regexrregex101 。对于所有这些:看来我的正则表达式返回误报,或者我的正则表达式未按预期工作。

问题:什么正则表达式可以做我想要它做的事情?

最佳答案

  1. 您需要确保使用 ^...$ 检查完整的字符串(从第一个字符到最后一个字符)
  2. 第一个数字应至少出现 1 次(因此您需要使用 + 而不是 *)。

检查这个例子:

r = /^\d+\.?\d{0,2}$/
tests = ['1', '1.', '1.1', '1.11', '111111111', '111111111.', '111111111.1', '111111111.11', 'a', 'a.', '1.a', '1.111', '1.1111']
tests.forEach(function(val) {
console.log(val, val.match(r) ? ': valid' : ': invalid');
});

更新

按照评论 - 如果您需要“整数或具有 0 - 2 个小数位的十进制数”的解决方案(就像您在问题中所说的那样,但有效输入部分),你可以使用这个:

r = /^\d+(\.\d\d{0,1})?$/
console.log('1.'.match(r))

tests = ['1', '1.', '1.1', '1.11', '111111111', '111111111.', '111111111.1', '111111111.11', 'a', 'a.', '1.a', '1.111', '1.1111']
tests.forEach(function(val) {
console.log(val, val.match(r) ? ': valid' : ': invalid');
});

关于javascript - 正则表达式匹配字符串是否包含带有数字的整数/小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40424389/

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