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

How to block a string containing specific characters and of specific length.?

如何阻止在字符串中使用 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 等连续元音

您可以使用

^(?!.*[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 个或更多字符
  • (?: - optional 非捕获组匹配 1 或 0 序列的开始
    • - - 一个连字符
    • [a-zA-Z\u00BF-\u1FFF\u2C00-\uD7FF]* - 定义范围内的 0 个或更多字符
  • )? - 非捕获组结束
  • $ - 字符串结尾