如何包含字符,但不允许重复字符?

时间:2017-02-22 16:16:00

标签: regex

我不想重复问号,但我希望在任何地方都允许多个问号,只要它不重复。我无法在方括号内工作。

([a-z#$@]+\?{1}[a-z#$@]+)

should?matchthisentirely?abc?abc

should??notwork

1 个答案:

答案 0 :(得分:2)

您可以使用这样的负向前瞻性正则表达式:

^(?!.*[?]{2})[a-z#$@?]+$

RegEx Demo

(?!.*[?]{2})是否定前瞻,不会在输入中的任何位置禁止多个?

如果您还想在开始和结束时禁用?,那么您可以将此正则表达式与2个额外的否定前瞻一起使用

^(?![?])(?!.*[?]$)(?!.*[?]{2})[a-z#$@?]+$

RegEx Demo 2

下面:

  • (?![?]) - 不要在开始时?
  • (?!.*[?]$) - 不允许?在最后