0

我需要一个能够检查数字-的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

4 回答 4

2

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

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

如果您只想要正数并且不想允许前导零,请使用此正则表达式:

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

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

true如果提供的值包含数字和加号或减号的任意组合,您的函数将返回,包括诸如 in 之类的重复"---+++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);
}

于 2012-06-19T06:39:00.497 回答
1

怎么样

function IsNumeric(s) {
    return /^(+|-|)\d*$/.test(s);
}
于 2012-06-19T06:46:00.230 回答
1

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

试试这个:

       var filter = /^[0-9\-]+$/;
于 2012-06-19T07:03:22.107 回答
0

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

function IsNumeric(str) {
    return str.length == 1 && (parseInt(str) < 10 || str == "-");
}
于 2012-06-19T06:34:56.307 回答