【问题标题】:I want to validate words for repetitive characters in a input field using regex我想使用正则表达式验证输入字段中重复字符的单词
【发布时间】:2014-09-19 06:01:31
【问题描述】:

问题是当用户在输入字段中输入aaaaaaxyzzz 等时,我想检查用户是否不能重复输入3 个相似的字母。例如 aabb 是有效的,但 aabbb 应该是无效的。我想使用正则表达式来做到这一点。有没有办法做到这一点..?

【问题讨论】:

    标签: javascript regex html


    【解决方案1】:

    您可以在负前瞻 ((?!…)) 中使用反向引用 (\1),如下所示:

    /^(?:(\w)(?!\1\1))+$/
    

    此模式将匹配由“单词”字符(拉丁字母、十进制数字或下划线)组成的任何字符串,但前提是该字符串不包含同一字符的三个连续副本。

    要使用 HTML5 pattern 属性,应该是:

    <input type="text" pattern="^(?:(\w)(?!\1\1))+$">
    

    Demonstration

    【讨论】:

      【解决方案2】:

      你也可以用 JavaScript 试试这个模式

      (\w)\1{2,}
      

      你也可以在 jsfiddle 上测试它

      JavaScript 代码是这样的:

      jQuery(document).ready(
          function($)
          {
              $('#input').on(
                  'keyup',
                  function()
                  {
                      var $regex  = /(\w)\1{2,}/;
                      var $string = $(this).val();
      
                      if($regex.test($string))
                      {
                          // Do stuff for repeated characters
                      }
                      else
                      {
                          // Do stuff for not repeated characters
                      }
                  }
              );
          }
      );
      

      $('#input') 选择 ID 为 input 的文本字段。同样使用正则表达式模式中的{2,},您可以控制重复字符的长度。如果您将示例中的2 更改为4,则该模式将匹配5 个或更多重复字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-18
        • 2015-07-04
        • 1970-01-01
        • 1970-01-01
        • 2022-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多