Java 用于验证字符串是否有2个连续字母(不是2个连续字母表)的正则表达式

Java 用于验证字符串是否有2个连续字母(不是2个连续字母表)的正则表达式,java,Java,条件: 仅包含字母、连字符和撇号 包含至少两个连续的字母 不以空格或连字符开头或结尾 包含最小长度2 有效:a-gm-k,ak,h-'kj,um'h-k 无效:a-h-j, 已尝试^([a-zA-Z'][a-zA-Z'-]*[a-zA-Z'])$ 这是对连续条件的备案 写了\\b([a-zA-Z])\\1+\\b但是如果我给aa 有人能告诉我如何为上述条件编写一个正则表达式吗?需要应用一系列的正向外观头(?=): (?=([-'A-Za-z]{2,}))(?=^[^- ].*[^- ]$)(?=

条件:

  • 仅包含字母、连字符和撇号
  • 包含至少两个连续的字母
  • 不以空格或连字符开头或结尾
  • 包含最小长度2
  • 有效:
    a-gm-k,ak,h-'kj,um'h-k

    无效:
    a-h-j,

    已尝试
    ^([a-zA-Z'][a-zA-Z'-]*[a-zA-Z'])$

    这是对连续条件的备案
    写了
    \\b([a-zA-Z])\\1+\\b
    但是如果我给
    aa


    有人能告诉我如何为上述条件编写一个正则表达式吗?

    需要应用一系列的正向外观头
    (?=)

    (?=([-'A-Za-z]{2,}))(?=^[^- ].*[^- ]$)(?=.*[A-Za-z]{2,}.*)
    
    其中:

    • (?=([-'A-Za-z]{2,}))
      -仅包含连字符、撇号或字母,最小长度为2
    • (?=^[^-].[^-]$)
      -不以
      -
      或空格开头或结尾
    • (?=.[A-Za-z]{2,}.*.
      -至少包含两个连续的字母


    如果(1)只包含字母、连字符、撇号,为什么(3)在标题/尾随空格上失败?@hc\u dev,更新了链接,感谢您告知。太好了,它们使用Matcher的
    find()
    工作。看见