我如何修改下面的正则表达式以阻止字符的重复(在持续过程中不要重复两次)



以下是我要修改的正则表达式,以检查字符的重复,以持续中的2次不超过2次,请参见下面的示例。我有避免重复的正则义务,但我都需要同样的表达式。(/(。( 1 {2}/(

例如:

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

我有

^(?!.*[AaEeIiOoUu]{5}).*[AaEeIiOoUu].*[a-zA-Zu00BF-u1FFFu2C00-uD7FF]*(?:-[a-zA-Zu00BF-u1FFFu2C00-uD7FF]*)?$

由于字符不能立即出现,因此您可以在^之后立即向您的模式添加(?!.*(.)1{2})。您必须使用i修饰符以确保以情况不敏感的方式处理字母。

更新的正则表达式看起来像

/^(?!.*(.)1{2})(?!.*[AEIOU]{5}).*[AEIOU].*[A-Zu00BF-u1FFFu2C00-uD7FF]*(?:-[A-Zu00BF-u1FFFu2C00-uD7FF]*)?$/i
  ^^^^^^^^^^^^^^                                                             

请参阅Regex Demo

(?!.*(.)1{2})是一个负面的lookahead,如果立即在当前位置的右侧(在字符串启动之后,在此处(有0个以上的chars,则有0个以上的字符,然后有一个三倍的char: (.)将字符捕获成小组1和1{2}的值与第1组(由于1反向重新汇率(相同(由于{2}有限量化器(。

最新更新