如何修改下面的正则表达式来阻止字符的重复(连续两次不再重复两次)?

时间:2018-02-12 09:41:01

标签: angularjs regex

下面是我要修改的正则表达式,以便在延续中检查字符重复次数不超过2次,有关详细信息,请参阅以下示例。我有正则表达式来避免重复,但我需要在同一个表达式中同时使用它们。 (的 /(。)\ 1 {2} /

例如:

$('#calendar').fullCalendar({
    ...
    dayRender: function(date, cell){
        if (date > maxDate){
            $(cell).addClass('disabled');
        }
    }
    ...
});

我有

Nameee : Invalid,
Naaame : Invalid,
Name   : Valid,
Naammee: Valid,
Nnname : Invalid.

1 个答案:

答案 0 :(得分:0)

由于字符不能立即显示,因此您可以在^之后立即将(?!.*(.)\1{2})添加到您的模式中。您必须使用i修饰符来确保以不区分大小写的方式处理字母。

更新的正则表达式将类似于

/^(?!.*(.)\1{2})(?!.*[AEIOU]{5}).*[AEIOU].*[A-Z\u00BF-\u1FFF\u2C00-\uD7FF]*(?:-[A-Z\u00BF-\u1FFF\u2C00-\uD7FF]*)?$/i
  ^^^^^^^^^^^^^^                                                             

请参阅regex demo

(?!.*(.)\1{2})是一个负向前瞻,如果在当前位置的右边(此处,在字符串开始之后)有0个字符,然后是三倍的字符:{{ 1}}将char捕获到组1中,(.)与组1中的值相同(由于\1{2}反向引用)发生2次(由于\1有限量词)。