Javascript 4个或更多相同的连续字母

Javascript 4个或更多相同的连续字母,javascript,regex,Javascript,Regex,有谁能告诉我,我可以在现有的正则表达式中添加什么,从而使4个或更多的相同字母连续无效?这就是我到目前为止所做的: (^[A-Za-z]{1})([A-Za-z\-\'\s]{0,})([A-Za-z]{1}$) 除1项要求外,它满足我目前的所有要求,即: 任何字母字符 单个空格,但不作为第一个或最后一个字符 连字符,但不作为第一个或最后一个字符 单引号,但不作为第一个或最后一个字符 不超过3个相同的连续字符,不考虑大小写 至少2个字符长(如果存在) 一些例子: James -

有谁能告诉我,我可以在现有的正则表达式中添加什么,从而使4个或更多的相同字母连续无效?这就是我到目前为止所做的:

(^[A-Za-z]{1})([A-Za-z\-\'\s]{0,})([A-Za-z]{1}$)
除1项要求外,它满足我目前的所有要求,即:

  • 任何字母字符
  • 单个空格,但不作为第一个或最后一个字符
  • 连字符,但不作为第一个或最后一个字符
  • 单引号,但不作为第一个或最后一个字符
  • 不超过3个相同的连续字符,不考虑大小写
  • 至少2个字符长(如果存在)
一些例子:

James        - valid  
Sarah Jayne  - valid  
Michellle    - valid  
O'Brian      - valid  
Holly-Rose   - valid  
Eeeeric      - invalid  
Jo--anne     - invalid

根据您的描述、编辑和注释,您可能可以在Javascript中使用此正则表达式:

/^(?=.{2})(?!.*([a-z])\1{3})[a-z]+(?:[' -][a-z]+)*$/gmi

有两个lookahead:

  • (?=.{2})
    -正向前瞻以确保输入中至少有2个字符
  • (?!*([a-z])\1{3}
    负前瞻,以确保不允许字母表重复4次

添加有效和无效样本用于名称验证,因此:Ashley-有效James-有效Jo Michelle-有效Jeeerry-无效O'Brian-有效Emma Jayne-有效Jo-Danielle-无效Read并重新考虑您是否真的需要此验证。这是个坏主意。不要用正则表达式验证名称。要么允许任何输入,要么最多执行一些非常基本的验证,例如“最小长度3个字符”。尝试一下,但我现在不太清楚。如果只有字母不能是4个连续的字母,用
([a-zA-Z])
替换
()