2017-05-05 31 views
1

我如何搜索以下網址中{thing}的實例,這些實例不是我允許的短語?如何找到與一組被接受的短語不匹配的組

Test string;

https://example.com?good={offer_id}&good2={offer_name}&bad={revenue}&extra=1 

{offer_id}和{} OFFER_NAME應不匹配 {}收入應符合

我想到了最近的模式(但沒有比賽);

/{(?!(offer_id|offer_name))}/ 

在網上正則表達式測試儀:https://regex101.com/r/HwSknv/1

EDIT1:我要的{}收入每個實例(或類似)相匹配。因爲我打算將它們取代。

+0

你究竟想做什麼?如果{收入}存在,是否匹配整個網址? – Rahul

+0

我想匹配{revenue}(或類似的)的每個實例 – iguanaman

+0

因此,您的意思是'bad ='的內容? – Rahul

回答

1

問題是你匹配}而不匹配{後的任何字符。

你應該使用:

{(?!(?:offer_id|offer_name)})[^}]*} 

Updated Regex Demo

[^}]*將匹配0或更多,是不是}匹配}之前的任何字符。

0

{(?!(offer_id|offer_name)).*?}

+1

不幸的是,這允許像{offer_name£%5646}這樣的內容滑過。 – iguanaman

相關問題