簡體   English   中英

正則表達式僅允許一次“&”和“-”

[英]regex to allow only once “&” and “-”

我正在嘗試此正則表達式^[A-Za-z &-]+[A-Za-z]$

這允許這些字符串:

  1. abc && abc
  2. abc -- abc
  3. abc &&-- abc

我想限制它一次只允許一個&- ,即abc & abc 它應該允許&- ,但不能一起使用,即fruits- apple & orange

簡單答案,僅允許&-

只需將&-從帶有+的字符類中移出:

^[A-Za-z ]+[&-][A-Za-z ]+$

(我在末尾添加了+ ,並在最后一組中添加了空格,因為您的示例在標點符號后允許有空格,在末尾可以有多個字母。)

這是一個更干凈的版本,使用不區分大小寫的標志:

/^[a-z ]+[&-][a-z ]+$/i

允許同時允許兩個,但每次僅允許一次的答案

在我發布此問題后, 您對問題進行了相當大的編輯 ,這完全改變了含義。 同時允許&-在相同的字符串,但只有一次一個,而不是彼此相鄰,你必須得到更多的創意,如:

/^[a-z ]+([&-])[a-z ]+(?!\1)[&-][a-z ]+$/i

這允許第一次使用&-([&-]) ,但是僅允許第二次未使用的。 我們使用否定的超前組執行此操作: (?!\\1)[&-] 這是一個演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM