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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求正则表达式, 第一位大于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;否则,可以输入任何数字。

单纯正则做不到的。

以上是关于求正则表达式, 第一位大于0的正整数,直接可以在onkeyup事件中 使用的!的主要内容,如果未能解决你的问题,请参考以下文章

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

求java正则表达式输出小于10的正整数

求一时间的正则表达式: 如09:43:09-9:43:10,12:00:01-13:01:34

C#文本框的文本,正则表达式约束,正整数和小数点后只有一位小数

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

js校验 正则表达式 金额