我已经搜索了StackOverflow,我找不到如何检查计算器应用程序的数字输入的正则表达式的答案,该计算器应用程序将检查每个键盘的以下格式(jquery键向上):
我不打算用逗号分隔成千上万......但如果有人也可以为此提供正则表达式,我会欢迎。
只用一个正则表达式检查上述条件是否可行?提前谢谢。
答案 0 :(得分:3)
单独.
是否成功?如果是,那么使用:
\d+(\.\d*)?|\.\d*
如果没有,请使用:
\d+(\.\d*)?|\.\d+
我建议不要将逗号合并到正则表达式中,而是先将它们删除:str = str.replace(/,/g, '')
。然后检查正则表达式。
这不会验证数字是否正确地分组为三个组,但我在这样的检查中看不到多少价值。如果用户键入1,024
然后决定添加数字(1,0246
),则可能不应强制他们移动逗号。
答案 1 :(得分:1)
让我们写下你的规范,然后从中发展。
\d+
\.\d*
将两者结合起来并使后者可选,你得到:
\d+\.?\d*
至于处理逗号,我宁愿不进入它,因为它变得非常难看。如果你仍然关心它们,你应该简单地从输入中删除所有逗号。
答案 2 :(得分:0)
你可以这样使用:
[/\d+./]
我认为这可以用于任何查询。
无论是12445还是1244.或12445.43
答案 3 :(得分:0)
我将在这里提出一个可能被低估的答案 - 这是一个更好的解决方案:
function valid_float (num) {
var num = (num + '').replace(/,/g, ''), // don't care about commas, this turns `num` into a String
float_num = parseFloat(num);
return float_num == num || float_num + '.' == num; // allow for the decimal point, deliberately using == to ignore type as `num` is a String now
}
任何能正确完成工作的正则表达式都会在说出“可能”之后带有一个大的星号,如果它没有被发现,它将是一个绝对的调试猪。
当然,这个答案并没有给你带来最酷的单线,这会让你变得“酷!”,但是在6个月的时间里你意识到它在某个地方出了问题,或者你想把它变成做一些稍微不同的事情,看到哪里和修复会更容易。
答案 4 :(得分:0)
我使用 ^(\d)+(.(\d)+)+$
来捕获每个整数并具有无限长度,只要字符串以整数开头和结尾,并且在每个整数组之间都有点。我正在捕获整数组,以便我可以比较它们。