代码之家  ›  专栏  ›  技术社区  ›  RogerHN

Javascript正则表达式只检查字符串开头的数字和减号

  •  0
  • RogerHN  · 技术社区  · 8 年前

    您好,我正在尝试在此输入字段中创建一个正则表达式,以仅接受4个不大于2934的数字,但也接受一个负数(-2394)。

    我希望只允许在字符串的开头使用减号,然后只允许使用4个数字,不大于2934(正和负,因为它们是坐标)。

    已经在这里尝试了给定的解决方案,但我遗漏了一些东西。

    function numonly(myfield, e, dec){
          // max input value of 4196 x 4196
          $("#mlat,#mlon").keyup(function() {
            var val = $(this).val().replace(/[^0-9]+/,"");
            if (val => 2934){
              !/^\s*$/.test(val);
              val = (parseInt(val) > 2934) ? 2934 : val;
            }
            else {
              (!/^\s*$/.test(val));
              val = (parseInt(val) > 2934) ? 2934 : val;
            }
            $(this).val(val);
          });
    
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input id="mlat" type="text" name="mlat" maxlength="4" onkeypress="return numonly(this,event)"><br>
    <input type="text" name="mlon" id="mlon" maxlength="4"  onkeypress="return numonly(this,event)">
    3 回复  |  直到 8 年前
        1
  •  1
  •   gurvinder372    8 年前

    我正在尝试使此输入字段中的正则表达式只接受4 数字不大于2934,但也接受负数(-2394)。

    此处不需要正则表达式,请使用

    var minValue = -2394;
    var maxValue = 2934;    
    var val = +$(this).val().replace(/[^0-9-]+/g,""); //using your own regex to replace non-numeric characters
    var isValid = !isNaN( val ) && val < maxValue && val > minValue ;
    

    此外,我注意到您希望将这些值设为上限和下限

    if ( !isNaN( val ) )
    {
        var finalVal  = isValid ? val : (val < 0 ? minValue  : maxValue);
    }
    
        2
  •  0
  •   swetansh kumar Charnjeet Singh    8 年前

    您可以使用以下方法:

    <html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    
    <body>
    <input id="mlat" type="text" name="mlat" maxlength="5" onkeypress="return numonly(this,event)"><br>
    <input type="text" name="mlon" id="mlon" maxlength="5"  onkeypress="return numonly(this,event)">
    <script type="text/javascript">
    
    function numonly(myfield, e, dec){
    
      // max input value of 4196 x 4196
      $("#mlat").keyup(function() {
        var val = $(this).val().replace(/-?\d+[^0-9]+/,"");
        if (val => 2934){
          !/^\s*$/.test(val);
          if (val > 0) {
            val = (parseInt(val) > 2934) ? 2934 : val;
          }else{
            val = (parseInt(val) > -2394) ? val : -2394;
          }
    
        }
        else {
          (!/^\s*$/.test(val));
          if (val > 0) {
            val = (parseInt(val) > 2934) ? 2934 : val;
          }else{
            val = (parseInt(val) > -2394) ? val : -2394;
          }
        }
        $(this).val(val);
      })
    };
    
    
    </script>
    </body>
    </html>
    

    并将maxlength替换为5以处理 - 登录输入标记。

        3
  •  0
  •   Farhan Qasim    8 年前
    function numonly(myfield, e, dec){
      // max input value of 4196 x 4196
      $("#mlat,#mlon").keyup(function() {
        var val = $(this).val().replace(/[^0-9-]+/,"");
        if (parseInt(val) > 2934){
          val = (parseInt(val) > 2934) ? 2934 : val;
        }
        else {
          val = (parseInt(val) < -2934) ? -2934 : val;
        }
        $(this).val(val);
      });
    }
    

    将最大长度增加到5,以满足“-”

    <input id="mlat" type="text" name="mlat" maxlength="5" onkeypress="return numonly(this,event)"><br>
    <input type="text" name="mlon" id="mlon" maxlength="5"  onkeypress="return numonly(this,event)">