REGEX:匹配除部分匹配之外的所有内容

时间:2017-11-08 21:52:49

标签: javascript regex

我希望匹配除给定字符串(部分匹配)之外的所有内容:https://play.google.com/variable

通过使用以下正则表达式,我设法完全相反:

(\S*play\.google\.com\S*)

确实选择了我想要保留的唯一字符串,所以我希望我的正则表达式选择所有文本除了上面的那个(基本上与我刚刚做的相反)。

我尝试过负面的预测,但它没有用,希望你能帮助我。完整代码可在此处获取:https://regexr.com/3h4se

如果可能的话,我也会喜欢一个jsfiddle,除了那个url之外,还会使用你修改过的正则表达式删除所有内容,这样最后的输出就会是:

https://play.google.com/variable
祝你好运!

3 个答案:

答案 0 :(得分:1)

How about like this, using a negative lookahead:

^(?!https:\/\/play\.google\.com\/variable).*

Live example:

https://regexr.com/3h4sq

Note that we can still successfully match substrings of the URL like "google" and "variable" while still excluding the full URL match.

Edit:

Here's another way to do it without the lookahead, using The Greatest Regex Trick Ever from Rexegg.com:

https:\/\/play\.google\.com\/variable|(.*)

And return group 1:

$1

答案 1 :(得分:1)

I'm not totally clear what you're trying to do; but this is what I came up with:

^([\s\S])?(\S)(https://play.google.com/\S*)([\s\S]*)\g

then replace: $1$2$4

答案 2 :(得分:0)

我会在分组之前和之后捕捉所有内容。像这样:

/([^]*)play\.google\.com([^]*)/

这样你只需要在之前和之后用组替换原始文本。即G:

original_text.replace(/([^]*)play\.google\.com([^]*)/, '$1$2');

这将为您提供所有文本,然后再加入所有文本。

P.S。这只适用于只有1个且只有1个短语" play.google.com"在文中。