如何阻止包含特定字符和特定长度的字符串。

时间:2017-05-22 07:12:45

标签: regex regex-negation

如何阻止在一个字符串中使用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-\u1F‌FF\u2C00-\uD7FF]*$/

它只阻挡了AEIOU,Aeiou,aeiou等元音的连续元音

1 个答案:

答案 0 :(得分:1)

您可以使用

^(?!.*[AaEeIiOoUu]{5})[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*(?:-[a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]*)?$

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?!.*[AaEeIiOoUu]{5}) - 字符串
  • 内任何位置都没有任何5个元音
  • [a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]* - 来自定义范围的0个或更多字符
  • (?: - 启动匹配1或0序列的可选非捕获组
    • - - 连字符
    • [a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]* - 来自定义范围的0个或更多字符
  • )? - 非捕获组的结束
  • $ - 字符串结尾