2017-04-04 32 views
1

我想用一些字符來限制我的正則表達式,如<> @#並且只允許一次出現|字符。到目前爲止,我沒有成功。允許在正則表達式中出現一次

^([^<>@#]+[|]?)$ 

無法弄清楚如何限制我的正則表達式只發生一次|焦炭。

+0

管道是否必須恰好發生一次,還是根本不會發生? –

+0

它只能發生一次或根本沒有發生 – alxbxbx

回答

1

使用負前瞻:

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

regex demo

詳細

  • ^ - 一個字符串的開始
  • (?!(?:[^|]*\|){2}) - 不能有2次出現的除之外的0+字符個然後|
  • [^<>@#]+ - 1以上字符比<>@#
  • $其他 - 字符串的結尾。
+1

謝謝!這是可行的解決方案。我會將此標記爲正確答案。 – alxbxbx

+0

該表達式將匹配滿足限制條件的字符串('^ [^ <> @#] + $',除了在否定字符類中的一個或多個字符),其中只有'|'char *串。因此,'|','d','| d','d |'都是[有效匹配](https://regex101.com/r/KSrVwj/2)。我在演示中添加了'\ n',因爲測試是針對多行字符串執行的。 –

+0

是的,這正是我正在尋找的。非常感謝! – alxbxbx