当前位置:编程学习 > JS >>

javascript 验证是否为数字方法总结

isNaN 函数
isNaN(expression:Object) : Boolean

计算参数,如果值为 NaN(非数字),则返回 true。此函数可用于检查一个数学表达式是否成功地计算为一个数字。


isNaN函数 如下:

 代码如下 复制代码

function checknum(str) {
 if (isNaN(str)) {
  alert("不是数字");
 }
}

另外再看

 代码如下 复制代码

parseInt("Hello",10);//return NAN
parseInt("110",10);//return 110

所以简单的判断字符串是否为数字的方法就是利用isNaN(),如果返回true,则该字符串不为数字,否则为数字

 代码如下 复制代码

isNaN(parseInt("Hello",10));//true;
isNaN(parseInt("110",10));//false;

注:不能利用以下方式判断:

 代码如下 复制代码

parseInt("Hello",10)==NaN;//return false
parseInt("110",10)==NaN;//return false

另外,可用正则表达式,最完整最精确的方法:

 代码如下 复制代码

function isNumber(oNum)
   {
  if(!oNum) return false;
  var strP=/^d+(.d+)?$/;
  if(!strP.test(oNum)) return false;
  try{
  if(parseFloat(oNum)!=oNum) return false;
  }
  catch(ex)
  {
   return false;
  }
  return true;
   }

这段javascript代码很简洁,大家可以看下。

 代码如下 复制代码
<script language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
//考虑小键盘上的数字键
event.returnvalue=false;
}
</script>
<input onkeydown="onlyNum();">

下面还有一种比较笨的方法,大家也可以看下,学习嘛
下次贴个用正则验证数字的

 代码如下 复制代码
<script language="javascript">
function CheckMyForm()
{
var txt = myform.mytext.value;
if(checknumber(txt))
{
alert("只允许输入数字!");
return false;
}
return true;
}
function checknumber(String)
{
var Letters = "1234567890";
var i;
var c;
for( i = 0; i < String.length; i ++ )
{
c = String.charAt( i );
if (Letters.indexOf( c ) ==-1)
{
return true;
}
}
return false;
}
</script>
<body>
<form name="myform" onSubmit="return CheckMyForm()">
<input type="text" name="mytext">
<input type="submit" name="mysubmit">
</form>
</body>

最简单的javascript验证是否不是数字的代码如下:

 代码如下 复制代码

<input type='TEXT' onKeyPress="if(event.keyCode==13){if(isNaN(this.value))alert('不是数值')};">

常用用的正则数字表达式

1)

 代码如下 复制代码

“^\d+$” //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$” //正整数
“^((-\d+)|(0+))$” //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$” //负整数
“^-?\d+$” //整数
“^\d+(” //非负浮点数(正浮点数 + 0)
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数
“^((-\d+(” //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$” //负浮点数
“^(-?\d+)(” //浮点数

2)

 代码如下 复制代码

var r = /^+?[1-9][0-9]*$/; //正整数
r.test(str);

补充:网页制作,js教程 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,