我需要一个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");
}
由于某种原因,它不起作用,任何方法不使用正则表达式进行验证?
答案 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 == "-");
}