javascript号验证功能

时间:2012-06-19 06:31:21

标签: javascript jquery validation

我需要一个javascript函数,只能检查数字 -

示例:1,2,3,4,5,6,7,8,9,0将返回true 并且 - 也将返回true。

除了所有返回false,包括输入被按下。

我有这样的功能:

function IsNumeric(sText){
    var filter = /^[0-9-+]+$/;
    if (filter.test(sText)) {
        return true;
    }else {
        return false;
    }
}
我称之为:

if(!IsNumeric(value)) {
  alert("Number and - only please");
}

由于某种原因,它不起作用,任何方法不使用正则表达式进行验证?

4 个答案:

答案 0 :(得分:2)

编辑:确定,根据您的评论更新,表达式可以匹配单个减号任何没有减号的数字组合:

function IsNumeric(sText){
   return /^(-|\d+)$/.test(sText);
}

如果你只想要正数并且不想允许前导零,那么使用这个正则表达式:

/^(-|[1-9]\d*)$/

关于你的问题“任何不使用正则表达式进行验证的方法?”,是的,有很多方法可以通过JS提供的各种字符串和数字操作函数来实现这一点。但正则表达式最简单。

如果提供的值包含任何数字组合以及加号或减号,包括true中的重复符号,则函数将返回"---+++123"。请注意,正则表达式末尾的+表示与前一个字符匹配1次或更多次。

您可能想要的是一个正则表达式,它允许在开头添加一个加号或减号,后跟任意数字组合:

function IsNumeric(sText){
   return /^[-+]?\d+$/.test(sText);
}

?表示匹配前面的字符0或1次。您可以将[0-9]简化为\d。请注意,您不需要if语句:只需直接从.test()返回结果。

接受“-123”,“123”,“+ 123”但不接受“-123”。如果您不想在开头添加加号,请将正则表达式更改为/^-?\d+$/

  

“示例:1,2,3,4,5,6,7,8,9,0将返回true并且 - 也将返回true。”

你的例子似乎是说只有一个数字或一个减号被认为是有效的 - 如果是这样的话,试试这个:

function IsNumeric(sText){
   return /^[\d-]$/.test(sText);
}

答案 1 :(得分:1)

怎么样

function IsNumeric(s) {
    return /^(+|-|)\d*$/.test(s);
}

答案 2 :(得分:1)

Hiphen( - )具有特殊含义,因此在字符集中使用转义字符。

试试这个:

       var filter = /^[0-9\-]+$/;

答案 3 :(得分:0)

可以很简单......试试这个:

function IsNumeric(str) {
    return str.length == 1 && (parseInt(str) < 10 || str == "-");
}