【问题标题】:jquery validation allow to enter code between user1 to user100jquery验证允许在user1到user100之间输入代码
【发布时间】:2021-02-09 09:00:19
【问题描述】:

这是我的示例,用户只能输入 1 到 100 之间的代码,否则返回 false。

var regexCode = /var regexEmail = /^0*(?:[1-9][0-9]?|100)$/;

 
 $(document).on('change','#code',function(){
    if (!regexCode.test($("input#code").val())) {
      alert("Please enter valid code");
      $("input#code").focus();
      return false;
    }
});
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<input name="code" id="code" placeholder="code" required>

现在它接受 1 到 100 之间的数字,但我需要它来接受代码,例如之间

user1user100 只有否则返回 false。

【问题讨论】:

  • 您是否尝试将var regexCode = /var regexEmail = /^0*(?:[1-9][0-9]?|100)$/; 替换为var regexCode = /^0*(?:[1-9][0-9]?|100)$/;,因为第一行是错误的
  • 您希望它接受 1 到 100 和 user1 到 user100 还是只接受 user1 到 user100?
  • @Frenchy 它应该接受,在 user1 到 user100 而不是 1 到 100 之间。
  • 它也接受 user01 或 user001?
  • @Frenchy 不,先生,只应在 user1 到 user100 之间接受,因此它可以是 user1,user2 到 user100。任何一个。

标签: javascript jquery regex


【解决方案1】:

很多解决方案:正则表达式

var regexCode = /^user(?:[1-9][0-9]{0,1}|100)$/;

 
 $(document).on('change','#code',function(){
    var result = $("input#code").val();
    if (!regexCode.test($("input#code").val())) {
      alert("Please enter valid code");
      $("input#code").focus();
      return false;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<input name="code" id="code" placeholder="code" required>

【讨论】:

  • 它只允许 user01 而不是 user1。如果有人输入 user01,它应该只允许 user1 和 user100 之间的代码,因此应该返回 false 或从中删除第一个零。
  • 有更多解释就可以了
  • 先生,如果我们输入 user101 或 user111,它也将通过 user100,它正在接受它们。仅当它超出 user100(如 user101 或 user111)时才可以修改为在 user100 下接受,因此也应返回 false。 tnx.
  • 如果我想将我的容量增加到 300,比如用户 1 到用户 300 之间的代码应该接受。我已将正则表达式更改为此 var regexCode = /^user(?:[1-9][0-9]{0,1}|300)$/;但对我没有用。你能在它上面做些小改动吗?
  • 尝试 var regexCode = /^user(?:[1-9][0-9]{0,1}|[1-2][0-9][0-9]| 300)$/;
【解决方案2】:

你可以使用这个正则表达式/^[1-9][0-9]$|^100$/解释:

^[1-9][0-9]? 男士应该以两个或一个数字开头(第一个不接受 0 )范围数 - 0 --&gt; 99

| 或运算符

^100$ 仅以数字100 开头和结尾

还可以考虑使用以下方法从值中删除最后添加的数字:

value = value.substring(0, value.length - 1);
$(this).val(value);

Belw 在我在 Input 事件中使用的片段中检查每个键盘输入

var regexCode = /^[1-9][0-9]?$|^100$/;

 
 $(document).on('input','#code',function(e){
    let value = $(this).val();
    
    
    if (!regexCode.test($(this).val())) {
      alert("Please enter valid code");
      value = value.substring(0, value.length - 1);
      $(this).val(value)
      $("input#code").focus();
      return false;
    } else {
      $("#output").html("user"+value)
    }
    
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input name="code" id="code" placeholder="code" required> rang betwwen 0-100
<br><br>
user id = <span id="output"></span>

【讨论】:

  • 是的。但是如果有人输入了 user01,你能不能修改它以接受 user1 到 user100 之间的代码,所以消除第一个零,如果我们输入 user101,那么提到的范围也应该返回 false。 tnx
  • @mdserver ,是的,你是对的,现在修复了 :)
【解决方案3】:

您可以为此目的使用 HTML 模式。

<input type="text" name="code" id="code" placeholder="code" pattern="user[0-9]{1,2}" required />

【讨论】:

  • 它也接受user999,规则是第一个零应该被删除,并且只接受user1到user100之间的代码。
猜你喜欢
  • 1970-01-01
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多