js 判断一个值是否为数字
我在做一个JSP页面,有一个text需要输入一个金额,我现在试用了正则表达式来限制这个text只能输入数字和小数点,但是会有这样的情况比如用户输入了15...1,这个是可...
我在做一个JSP页面,有一个text需要输入一个金额,我现在试用了正则表达式来限制这个text只能输入数字和小数点,但是会有这样的情况比如用户输入了15...1,这个是可以输入的,但这不是一个正确的数字格式,插入数据库会出错的,现在请问怎么在JS里面判断一下这个"15...1"它不是正确的数字,让它返回一个false,如果是"15.1"这样正确的数字,就让他返回true.
展开
18个回答
展开全部
第一种方法 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---------------------------------*/
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---------------------------------*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<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)
就新增了'-'减号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//不解释了直接上代码。
$(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;
}
}
})
})
//这是判断变量里面的值不能存在数字!!!
//如果要判断第一个值,只要稍微修改一下就好了!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两种方法,第一种,用正则
var re = /^[0-9]+.?[0-9]*$/; //判断字符串是否为数字
if (re.test(nubmer))
第二种,用内置的
var a = 'a'
isNaN(Number(a))
//number() 方法转换不成功会返回NAN 然后判断下,返回true,说明不是数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询