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,}))(?=^[^- ].*[^- ]$)(?=
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,}.*)
其中:
-仅包含连字符、撇号或字母,最小长度为2(?=([-'A-Za-z]{2,}))
-不以(?=^[^-].[^-]$)
或空格开头或结尾-
-至少包含两个连续的字母(?=.[A-Za-z]{2,}.*.
如果(1)只包含字母、连字符、撇号,为什么(3)在标题/尾随空格上失败?@hc\u dev,更新了链接,感谢您告知。太好了,它们使用Matcher的
find()
工作。看见