2015-04-05 27 views
0

不知道是否有可能,我需要改進我的RegExp。我有以下幾點:c中的簡單正則表達式幫助#

\b(?:http|https)://www\.domain\.co\.za/.* 

這是罰款,我所有的purpases除了我想這也驗證了:

http://www.domain.co.za (No Backslash at the end) 

但不應確認爲:

http://www.domain.co.zaaaaa 

而且那麼這個表達式:

\b(?:https?)://[.0-9a-z-]*domain\.co\.za 

來驗證(目前工作)

http://domain.co.za 
http://sub1.domain.co.za 
http://wwww.domain.co.za 

但它不應該用於驗證:

http://abcdomain.co.za 

回答

1

這很簡單:

\b(?:http|https)://www\.domain\.co\.za/?\b 

Demo

.*是useles因爲它總是匹配,我只是刪除它,使/可選,並插入\b

第二種情況是相似的:

\b(?:https?)://[.0-9a-z-]*\bdomain\.co\.za 

Demo

只需使用魔法\b :)

或者,如果你想要一個更嚴格的模式,這將是更好的:

\b(?:https?)://(?>[0-9a-z-]+\.)*domain\.co\.za 

Demo

因爲它強制運行子字段由.分隔的字符。原子團((?> ... ))在這裏是爲了避免catastrophic backtracking