发新话题
打印

正则表达--如何限制INPUT中只能输入数字?

正则表达--如何限制INPUT中只能输入数字?

数字中可以包括小数点和负号,且负号只能出现在最左侧,小数点和负号只能出现一次。
需要在onkeypress中做验证

<input name=test onkeyup="checkvalue(this.value);" onblur="">
<script>
var str;
function checkvalue(mytest)
{
if(/^(-?\d+)(\.|\.\d+)?$/.test(mytest))str=mytest;
document.all.test.value=str;
}
</script>

--------------------------------------------------------------------------------

<script>
function check(str)
{if(!/^[+|-|\d{1}]\d+[\.|\d{1}]\d+$/.test(str))alert('你输入的可能不是数字');}
</script>
<input onchange="check(this.value)" >

--------------------------------------------------------------------------------

只能输入数字的:
<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d.]/g,''))" ID="Text2" NAME="Text2">
只能输入数字和小数点:
<input onkeyup="value=value.replace(/[^\d.]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d.]/g,''))" ID="Text2" NAME="Text2">

--------------------------------------------------------------------------------

谢谢上面的兄弟帮忙,上面这些都不能满足需求。
下面的代码,有两个问题:
1。负号可以输入多次,而且不能限制只能在左边
2。如果小数点先输入,负号不能输入
能不能在这个代码的基础上进行修改达到需求?
<INPUT TYPE="text" class="inputborder1" name="c_11" onkeypress="checkIsFloat(this.value);" style="width:99%;text-align:right;font-weight:bold;ime-mode:disabled" >
<script LANGUAGE="JavaScript">
<!--
function checkIsFloat(svalue){
var nc=event.keyCode;
if((nc>=48) && (nc<=57) ){
}else if((nc==46)||(nc==45)){
var s=svalue;
for(var i=0;i<s.length;i++){
if(s.charAt(i)=='.'){
event.keyCode=0; return;
}
}
}else{
event.keyCode=0;return;
}
}
//-->
</SCRIPT>

--------------------------------------------------------------------------------

下面是两种判断方法,一个用了正则,另一个用常规方法
<script languang="javascript">
function checkkey(v){
var kc=event.keyCode;
if (kc ==43 ||kc ==45 ||kc ==46 ||kc ==13 || (kc >47 && kc <58)){
//只允许输入“+”“-”“.”“回车”“0-9”等字符。
if(kc==46&&v.indexOf('.') >-1)event.returnValue = false;
//不允许输入多个小数点
if((kc==43||kc==45)&&(v.indexOf('+')>-1||v.indexOf('-')>-1||v.length>0))event.returnValue = false;
//不允许输入多个正负号,不允许在数字中间输入正负号
}else{
event.returnValue = false;
alert("请输入数字");
}
}
function checkvalue(obj){
if(!/^[+|-]?\d+\.?\d*$/.test(obj.value)&&obj.value!=''){
alert('你输入的不是数字,或关闭输入法后再输入');
obj.select();
}
}
</script>
<br/>
用正则<input name="s" onblur="checkvalue(this)"><br/>
用常规<input onkeypress="checkkey(value);" onblur="value=value=='+.'||value=='-.'?value+0:value">

TOP

发新话题