2011-11-14 82 views
1

比方說,我有以下shorttag正則表達式:使用正則表達式創建我自己的短標籤?

\[BANNER{([0-9]*)}{(site1|site2)}{([A-Z]*)}\] 

基本上,我有一個CMS應該藉此shorttag,例如:

[BANNER{23}{site1}{HELLO}] 

,並打印出來是這樣的:

<a href='http://site1.com?par1=23&par2=HELLO'>SOME TEXT</a> 

現在,只要我輸入所有這3個參數,它就會很好用,但我怎樣才能使它們變爲可選? ,這樣它會接受任何下列選項:

[BANNER] 
[BANNER{23}] 
[BANNER{23}{site1}] 

和將輸出默認的東西,我想過做一個捕獲組在每個大括號{}的 - 但我想我的語法錯誤。

回答

2

如果我理解正確的問題,你可以從

\[BANNER({([0-9]*)})?({(site1|site2)})?({([A-Z]*)})?\] 
+0

該正則表達式產生太多組,你可能想排除一些組(?:) – SERPRO

+0

@SeRPRo:你當然是對的。儘可能簡單地寫出解決方案,但效率並不高。 – VMykyt

2

開始這一個應該工作:

/\[BANNER{([0-9]*)}(?:{(site1|site2)})?(?:{([A-Z]*)})?\]/ 

看到的結果here