【问题标题】:Regular Expression for input type number want 10 digit only? Only accept whole number输入类型数字的正则表达式只需要 10 位数字吗?只接受整数
【发布时间】:2020-07-27 08:06:50
【问题描述】:

我已经制作了一个表格,我希望在手机号码字段中它必须只有 10 位数字。如果超过,则用空格“”替换。并且希望我的用户不能输入超过 10 位数字。我只想处理正则表达式。我不想用 maxlength 来做,因为 maxlength 不适用于输入元素中的类型号。

function nValid(){
var elem=document.getELementById("mNumber");
var mNumber=elem.value;
var status=document.getElementById("status");
var regex=/\d{10}/;
if(mNumber==""){
status.innerHTML="Please enter the mobile number.";
}else if(mNumber.match(regex)==null || mNumber.length>10){
status.innerHTML="Please enter upto 10-digit mobile number";
//here I want Regular Expression elem.value=mNumber.replace(regex,""); 
}else{
status.innerHTML="Looks good!";
}
}
<form>
<label for="mNumber">Mobile Number</label>
<input type="number" id="mNumber" oninput="nValid()"/>
<small id="status" class="text-form text-muted"></small>
</form>

【问题讨论】:

  • &lt;input type="number"&gt;minmax 属性,在这里可以设置max=10
  • 您可以查看this 可能会有所帮助
  • 我已经在这方面工作了,但对我没有用。

标签: javascript


【解决方案1】:

我会这样做。

function nValid(elem){
    var mNumber = elem.value;
    var status = document.getElementById("status");
    if(mNumber.length == 0) {
        status.innerHTML = "Please enter the mobile number";
    } else if (!/^\d+$/.test(mNumber) || mNumber.length > 10) {
        status.innerText = "The number can only consist of up to 10 digits";
        setTimeout(function() {
            elem.value = mNumber.replace(/[^\d]+/, '').substring(0, 10);
            status.innerText = "Looks good!";
        }, 500);
    } else {
        status.innerText = "Looks good!";
    }
}
<form>
<label for="mNumber">Mobile Number</label>
<input type="text" id="mNumber" oninput="nValid(this)"/>
<small id="status" class="text-form text-muted"></small>
</form>

【讨论】:

    【解决方案2】:

    function nValid(){
    var elem=document.getElementById("mNumber");
    var mNumber=elem.value;
    var status=document.getElementById("status");
    var regex=/\d{10}/;
    if(mNumber==""){
    status.innerHTML="Please enter the mobile number.";
    }else if(mNumber.match(regex)==null || mNumber.length>10){
    status.innerHTML="Please enter upto 10-digit mobile number";
    if(mNumber.length>10){
    elem.value=mNumber.replace(/.$/g,"");
    status.innerHTML="Looks good!";
    }
    }else{
    status.innerHTML="Looks good!";
    }
    }
    <form>
    <label for="mNumber">Mobile Number</label>
    <input type="number" id="mNumber" oninput="nValid()"/>
    <small id="status" class="form-text text-muted"></small>
    </form>

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多