我想使用正则表达式在输入字段中验证重复字符的单词

时间:2014-09-19 06:01:31

标签: javascript regex html5

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

2 个答案:

答案 0 :(得分:3)

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

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

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

要使用HTML5 pattern属性,即:

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

<强> Demonstration

答案 1 :(得分: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')选择标识为input的文本字段。对于正则表达式模式中的{2,},如果重复的字符,您可以控制长度。如果您在示例中将2更改为4,则模式将匹配5个重复字符或更多字符。