2017-05-05 54 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

相关问题