javascript - 用于验证小数的正则表达式不起作用

标签 javascript

我有一个表单,其中有一个字段采用十进制值。这个小数的期望要求是它的形式是##.##,小数点的每一边都有两个数字。

我在网上找到了一个正则表达式,它应该可以验证小数,但会将任何输入视为无效。这是我的代码:

function validateDecimal(number)
{
eval("var stringvar=/^[-+]?([0-9]*\\.[0-9]{0,2})|([0-9]+)$/");

return stringvar.test(number);
}

还有电话...

var numStr = document.getElementById('Amount');
if (!validateDecimal(numStr)) {
    alert("Please enter a valid dollar amount in the form ##.##");
    return false;
}

我知道这个正则表达式并不是我要找的,但我似乎无法弄清楚为什么它将所有输入都视为无效。有谁知道我做错了什么?

最佳答案

第一个问题是您忘记获取输入的实际值:

document.getElementById('Amount').value

第二个问题是eval,这里不需要,可以这样写:

var stringvar = /^[-+]?([0-9]*\.[0-9]{0,2})|([0-9]+)$/;

第三,如果您的电话号码必须始终 XX.XX,这是我建议的正则表达式:

/^[+-]?\d\d\.\d\d$/

关于javascript - 用于验证小数的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17892480/

相关文章:

javascript - 如何在 jQuery 中正确声明变量

javascript - jquery事件无法绑定(bind)

javascript - 使用 Nightwatch.js 上传图像文件

javascript - 突出显示 div onclick 并取消突出显示第二次单击

javascript - JQuery 示例不起作用 - "Object doesn' t 支持属性或方法 'button'“

javascript - D3 - 将事件添加到酒吧

javascript splice() 索引问题

Javascript延迟for内的图像更改

javascript - 这会造成任何安全漏洞吗?

javascript - 如何使用 puppeteer 在 <div> 列表中进行抓取