允许在正则表达式中出现一次

alx*_*xbx 6 regex

我想用一些字符限制我的正则表达式,例如 < > @ # 并只允许出现一次 | 特点。到目前为止我还没有成功。

^([^<>@#]+[|]?)$
Run Code Online (Sandbox Code Playgroud)

无法弄清楚如何将我的正则表达式限制为仅出现一次 | 字符。

Wik*_*żew 5

使用负前瞻:

^(?!(?:[^|]*\|){2})[^<>@#]+$
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示

细节

  • ^- 字符串的开头
  • (?!(?:[^|]*\|){2})|- 除了and then 之外不能出现 2 次 0+ 字符|
  • [^<>@#]+<- 1 个或多个除, >, ,@之外的字符#
  • $- 字符串末尾。