我想编写一个允许整数或具有 0 - 2 个小数位的小数的正则表达式。
有效输入
1
1.
1.1
1.11
111111111
111111111.
111111111.1
111111111.11
Run Code Online (Sandbox Code Playgroud)
输入无效
a
a.
1.a
1.111
1.1111
Run Code Online (Sandbox Code Playgroud)
这是我想出的正则表达式
\d*\.?([\d]){0,2}
Run Code Online (Sandbox Code Playgroud)
我在测试它以确保它有效时遇到了麻烦。我找到了几种测试它的方法。使用test我刚刚在这里使用 w3schools 设置的方法。另一种方法是使用一些 javascript 正则表达式测试器,例如regexr和regex101。对于所有这些:看来我的正则表达式返回误报,或者我的正则表达式未按预期工作。
问题:什么正则表达式可以做我想做的事?
^...$+and not *)。检查这个例子:
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');
});Run Code Online (Sandbox Code Playgroud)
根据评论 - 如果您需要“整数或具有 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');
});Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |