我需要检查并确保变量只包含数字0-9或句号或逗号。其他任何事都应该被拒绝。
我在函数中设置了一个简单的IF语句,我认为它可以工作,但事实并非如此:
function numCheck(source) {
if (!(source.matches("[0-9.,]*"))) {
alert('Number');
}
else {
alert('Not a number');
}
}
什么都没发生。我可以在没有if语句的情况下调用该函数并且它可以工作,但不知怎的,我只是没有正确地执行语法。
答案 0 :(得分:3)
matches()
不是标准库中的方法,但match()
是。
事实上,你可能最好使用这样的东西......
var looksLikeANumber = /^[\d.,]+$/.test(source);
我使用test()
因为您不需要match()
的强大功能,它会返回捕获的组等。这样,您还可以将source
隐式转换为字符串免费(如果传入号码,则match()
上的Number.prototype
不会出现问题。
答案 1 :(得分:1)
您没有使用正则表达式分隔符和行开始/结束锚点。
应该是:
source.match(/^[0-9.,]*$/)
答案 2 :(得分:0)
试试这个
var match = /^[0-9.,]*$/.exec(this.value); // value to be matched
if (!match) {
alert('invalid');
}
答案 3 :(得分:0)
我会更进一步使用此正则表达式并使用.test
:
var result = /^\d*[\d,.]\d*$/.test(string);
确保至少有一个号码(它可以接受更多)并且只有1个句点或1个点。