2011-07-26 84 views
0

我試圖只限制一個域的特定面額,但允許其他人。例如,正則表達式是這個正則表達式可以做得更好嗎?

^(www\.)?(?!abc\.co)[a-zA-Z\-]+\.(co|org)\.uk$ 

這將不允許abc.co.uk和www.abc.co.uk但允許www.abcdef.co.uk,www.abc-def.co.uk等然而我想知道這是否可以做得更好?

EDIT

這裏是相同的正則表達式允許的子域的一個實例。

^(www\.)?([a-zA-Z\-]+\.)?(?!abc\.co)[0-9a-zA-Z\-]+\.(co|org)\.uk$ 
+1

具體是什麼要求你想要允許和拒絕? – Gareth

+2

使用'/ i'或'(?i:...)',因爲我猜你不想讓'abC.co.uk'。 – Qtax

+0

@Gareth - 我希望允許除abc.co.uk以外的所有域名變體 – PeanutsMonkey

回答

1

看來你想匹配任何事情末與abc.co.ukabc.org.uk
假設是正確的,這裏表達的是,正則表達式:

(?<!abc.(co|org).uk)$ 

它使用一個負的外觀後面從輸入端斷言它不與給定的正則表達式結束。

+0

是否有任何理由爲什麼你會做一個消極lookbehead負面lookbehead? – PeanutsMonkey

+0

因爲重要的是輸入不應該*結束*,所以使用輸入結束作爲錨點,這個正則表達式說:「當你到最後,檢查以前的字符不是等等等等。 – Bohemian

+0

謝謝。但我想你會想檢查它是否以字符串開頭,例如abc.co.uk,如果它不執行表達式的其餘部分 在http://gskinner.com/RegExr/嘗試了你的建議。它似乎並不奏效。 – PeanutsMonkey

相關問題