Javascript正则表达式只检查字符串

时间:2018-02-22 12:34:13

标签: javascript regex expression

您好我想在此输入字段中创建一个正则表达式,只接受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 个答案:

答案 0 :(得分:1)

  

我想在这个输入字段中创建一个正则表达式,只接受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);
}

答案 1 :(得分:0)

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)">

答案 2 :(得分:0)

您可以使用以下方法:

<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以处理输入标记中的-符号。