我想使用regex验证输入字段中重复字符的单词

I want to validate words for repetitive characters in a input field using regex

本文关键字:字符 单词 字段 输入 regex 验证      更新时间:2023-09-26

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

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

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

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

要使用HTML5pattern属性,应该是:

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

演示

您也可以在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个或更多重复字符。