如何阻止在一个字符串中使用5个连续元音(a,e,i,o,u),并且只允许使用一个连字符( - )? 它不应该允许连续元音,即使它是大写字母(AEIOU),也可以是连续形式的大小写,如AeiOU,aEIou,eeeee,AoEEU,uuuaa,iiiOU等。它不应该允许使用5个连续元音,不允许任何数字,除连字符外不允许使用特殊字符。 现在我正在使用这样的东西,
/^(?![Aa][Ee][Ii][Oo][Uu])[a-zA-z\u00BF-\u1FFF\u2C00-\uD7FF]*-[a-zA-z\u00BF-\u1FFF\u2C00-\uD7FF]*$/
它只阻挡了AEIOU,Aeiou,aeiou等元音的连续元音
答案 0 :(得分:1)
您可以使用
^(?!.*[AaEeIiOoUu]{5})[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*(?:-[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*)?$
请参阅regex demo
<强>详情
^
- 字符串开头(?!.*[AaEeIiOoUu]{5})
- 字符串[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*
- 来自定义范围的0个或更多字符(?:
- 启动匹配1或0序列的可选非捕获组
-
- 连字符[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*
- 来自定义范围的0个或更多字符)?
- 非捕获组的结束$
- 字符串结尾