js 正则验证正整数

Posted

tags:

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

js 正则验证正整数,不能是0开头。这个怎么写呢?
网上写的"^[0-9]*[1-9][0-9]*$"这个不符合要求,0123尽然能通过?

谢谢大家了

1、打开文本编辑器,创建一个新的html文件,然后在html文件中添加必要的html代码:

2、添加script标签,在script标签中添加js代码,定义一个验证是否为正整数函数,验证的方式为正则:

3、在控制台中使用定义的函数,如果是正整数,函数返回ture,否则函数返回false:

参考技术A ^[1-9][\d]*$
第一位不为 0 就行了么~追问

嗯,提问之前我也是这样试的,好像有点问题,所以才来问,现在又重新测试了一次,是可以的。汗一个,谢谢哈。

参考技术B "^[1-9]*[1-9][0-9]*$" 把0排开嘛本回答被提问者采纳

求正则表达式, 第一位大于0的正整数,直接可以在onkeyup事件中 使用的!

以下贴上我之前写的一个通用js函数,供您参考:

你可以直接保存为html文件进行测试

<html>
<head>
<meta http-equiv="Content-Type" content="text/html" />
<script>
/**
* 验证是否符合指定的表达式
*
* @param obj 被检查的对象
* @param tit 弹出的提示
* @param reg 表达式
* @param flag 是否置空标志
* @return
*/
function checkValueContentByYch(obj,tit,flag,reg)
var regExp = reg;
var val = obj.value;
if(val!='')
if(regExp.exec(obj.value))
if (flag)
obj.value=parseFloat(obj.value);

return true;
else
if(flag)
var tempval=eval(obj);
tempval.focus();
tempval.select();
alert(tit);
return false;
else
obj.value="";
alert(tit);
return false;


else
return true;


</script>
</head>

<input type="text" id="cou" name="生成的题目数量决定了自动出题的题目数量!"
onkeyup="checkValueContentByYch(this,'只能输入整数!',false,/^[1-9]1\d*$/);"
onfocus="var tempval=eval(this);tempval.focus();tempval.select();"
onblur="checkValueContentByYch(this,'只能输入整数!',true,/^[1-9]1\d*$/);" />

</body>
</html>追问

有更简洁一点的吗? 因为我有10个还要多的这样的文本框, 如果每个都要些三个事件! 感觉 很不好!

追答

既然你说不好,那就给你精简下:

function checkValueContentByYch(obj)
var regExp = /^[1-9]\d*$/;
if(!regExp.exec(obj.value))
obj.value='';



追问

在考考你! 这样可以实现了,但 中文我能拖进去!复制也能进去! 能解决吗?

追答

看我的第一个回答,需要加onblur事件,这样才够严谨;

参考技术A ^[1-9]\d*$ 如此 你看看满足否 参考技术B ^[1-9].*$追问

这样的话!会禁掉第一位以后的所有的0, 也就是说 ,输入的第二位、第三位,根本无法输入0

追答

哦。明白了,这样的话只能写一个function去处理了,
要先拿到number得长度,如果检测发现长度为0,就说明第一位还没有输入,此时这个必须为1-9;否则,可以输入任何数字。

单纯正则做不到的。

以上是关于js 正则验证正整数的主要内容,如果未能解决你的问题,请参考以下文章

js验证正整数

js验证非0开头的不超过6位的正整数,求正则表达式

大于等于0的正整数正则表达式是啥?

常用的JQuery数字类型验证正则表达式整理

正则表达式怎么来验证输入框中只能输入整数而且不能以0开头;就是不能输入001这样的数字;

Js 常用正则表达式