js 判断一个值是不是为数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 判断一个值是不是为数字相关的知识,希望对你有一定的参考价值。

我在做一个JSP页面,有一个text需要输入一个金额,我现在试用了正则表达式来限制这个text只能输入数字和小数点,但是会有这样的情况比如用户输入了15...1,这个是可以输入的,但这不是一个正确的数字格式,插入数据库会出错的,现在请问怎么在JS里面判断一下这个"15...1"它不是正确的数字,让它返回一个false,如果是"15.1"这样正确的数字,就让他返回true.

js有个函数 isNaN(val)//如果是数字则返回 false

使用时候
if(!isNaN(val))
alert("是数字");
else
alert("不是数字");

js的验证不安全 如果禁止浏览器javascript 很容易就跳过去验证了

要是模拟提交 ,更容易攻破
嘿嘿 jsp中一定要验证哟
参考技术A 第一种方法 isNaN
isNaN  返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。
NaN 即 Not a Number
isNaN(numValue)
但是如果numValue果是一个空串或是一个空格,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
第二种方法 正则表达式
function checkRate(input)
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
var nubmer = document.getElementById(input).value;
if (!re.test(nubmer))
alert("请输入数字");
document.getElementById(input).value = "";
return false;


第三种方法 利用parseFloat的返回值
/*----0313-------------验证数据 是数字:返回true;不是数字:返回false--------工具方法,不含有业务逻辑---------------------*/
function isNotANumber(inputData)
//isNaN(inputData)不能判断空串或一个空格
//如果是一个空串或是一个空格,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
if (parseFloat(inputData).toString() == "NaN")
//alert("请输入数字……");注掉,放到调用时,由调用者弹出提示。
return false;
else
return true;


/*--End--0313-------------验证数据 是数字:返回true;不是数字:返回false---------------------------------*/
参考技术B <html>
<head>
<title>javascript之onsubmit</title>
<!--
onsubmit事件,在表单form提交时触发
通常用来验证输入内容的适配性
return true通过验证,允许提交
return false验证失败,拒绝提交
-->
    <script>
        //字符串中包含特定符号的个数
        function matchNumber(str,ch)
        
         var n=0;
         for(var i=0;i<str.length;i++)
        
         if(str.charAt(i)==ch)
         n++;
        
         return n;
        
        //通过字符集顺序来验证数字
        function isNumber(str)
        
            var i=0;
            for(i=0;i<str.length;i++)
            
                if((str.charAt(i)>='0'||str.charAt(i)=='.')&&(str.charAt(i)<='9'||str.charAt(i)=='.')&&matchNumber(str,'.')<=1)
                    continue;
                else
                    return false;
            
            return true;
        
        window.onload=function()
        
            document.getElementById("form2").onsubmit=function()
            
                alert("动态绑定,form2提交中...");
                if(isNumber(document.getElementById("word").value))
                
                    alert("类型验证成功");
                    return true;
                
                else
                
                    alert("类型验证失败");
                    return false;
                
            
        
    </script>
</head>

<body>
    <form action="http://www.baidu.com/baidu" method="get" id="form2">
        <input type="text" id="word" name="word"/>
        <input type="submit"/>
    </form>
</body>
</html>

正则没有仔细研究过,就写个比较笨的方法吧,字符串中数字为  0~9,有特殊符号 .  +  -等。所以就依次判断呗(str.charAt(i)>='0'||str.charAt(i)=='.')&&(str.charAt(i)<='9'||str.charAt(i)=='.')   

(单个字符判断大于0或者等于'.')并且(单个字符小于9或者等于'.')并且特定的'.'字符个数小于等于1。就断定为正常的数字格式,若需要增加特定的符号,只需在括号内||条件并限制个数即可。

例如

((str.charAt(i)>='0'||str.charAt(i)=='.'||str.charAt(i)=='-')&&(str.charAt(i)<='9'||str.charAt(i)=='.'||str.charAt(i)=='-')&&matchNumber(str,'.')<=1&&matchNumber(str,'-')<=1)

就新增了'-'减号

参考技术C
//不解释了直接上代码。
$(function() 
   $("#fuck").blur(function()
      var a= $(this).val()
      for(var i=0; i<a.length; i++)
      
         var j = a.substring(i,i+1);
         if(!isNaN(j))        //或者 isNaN(j) == false
         
            $("#DivFname").html("名字不能为空,并且不能包含数字!")
            return false;
         
      
   )
)
//这是判断变量里面的值不能存在数字!!!
//如果要判断第一个值,只要稍微修改一下就好了!!

参考技术D 两种方法,第一种,用正则
var re = /^[0-9]+.?[0-9]*$/;   //判断字符串是否为数字
if (re.test(nubmer))

第二种,用内置的
var a = 'a'
isNaN(Number(a)) 
//number() 方法转换不成功会返回NAN  然后判断下,返回true,说明不是数字

JS 判断是否为数字 数字型特殊值

JS 数字型三个特殊

Infinity ,代表无穷大,大于任何数值

-Infinity ,代表无穷小,小于任何数值

NaN Not a number,代表一个非数值

 

 

 isNaN的使用:

 

 

isNaN(x):  x是数字型的时候(也就是它不是非数字) 它的返回值为 false

 

                 x是非数字型的时候 它的返回值为 true

 

 

 

用来判断一个变量是否为非数字的类型,返回 true 或者 false

 

var usrAge = 21;

 

console.log(isNaN(userAge));  

 

// false ,21 不是一个非数字 (因为在用 var 定义一个变量时默认为字符串类型)

 

 

 

var usrName = "andy";

 

console.log(isNaN(userName)); // true ,"andy"是一个非数字

 

以上是关于js 判断一个值是不是为数字的主要内容,如果未能解决你的问题,请参考以下文章

js判断输入的值是不是为数字,也不能是负数

JS 判断某变量是不是为某数组中的一个值 的几种方法

判断是不是为数字

JS判断数字类型

js里如何判断两个文本框的值是不是一样?

用js怎么判断输入一个必须是数字?包括负数和整数