使用.matches时出现Javascript错误

时间:2013-10-11 18:30:40

标签: javascript regex

我需要检查并确保变量只包含数字0-9或句号或逗号。其他任何事都应该被拒绝。

我在函数中设置了一个简单的IF语句,我认为它可以工作,但事实并非如此:

function numCheck(source) {
  if (!(source.matches("[0-9.,]*"))) {
    alert('Number');
  }
  else {
    alert('Not a number');
  }
}

什么都没发生。我可以在没有if语句的情况下调用该函数并且它可以工作,但不知怎的,我只是没有正确地执行语法。

4 个答案:

答案 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个点。