Regex-没有连续的特殊字符



我正试图编写一个具有以下要求的Regex:

  • 除了字母和数字之外,不能有任何连续字符

示例:我是第一!我感觉好极了!(好的(,我有点。{}。悲伤(不好(

  • 除了字母和数字之外,字符不能超过4个

示例:a.a,aaa(OK(,a.a,a[]a/(NOT OK(

到目前为止,我已经写了这个Regex,但它似乎不能正常工作。

/^(?!.*?[!"#$%&'()*+,-./:;<=>?@[]^_`{|}~]{2})[A-Za-z0-9!"#$%&'()*+,-./:;<=>?@[]^_`{|}~].*$/

你能提出任何解决方案吗?谢谢

您可以使用

/^(?!.*[!-/:-@[-`{-~]{2})[A-Za-z0-9 ]*(?:[!-/:-@[-`{-~][A-Za-z0-9 ]*){0,4}$/

请参阅regex演示。

详细信息

  • ^-字符串的开头
  • (?!.*[!-/:-@[-`{-~]{2})-除了换行字符之外,任何零个或多个字符后面都没有两个连续的ASCII标点符号,尽可能多
  • [A-Za-z0-9 ]*-零个或多个字母、数字或空格
  • (?:[!-/:-@[-`{-~][A-Za-z0-9 ]*){0,4}-零到四次
    • [!-/:-@[-`{-~]-单个ASCII标点符号字符
    • [A-Za-z0-9 ]*-零个或多个字母、数字或空格
  • $—字符串结束

最新更新