为此,我一直在 stackoverflow 中查找,但我没有任何运气。
我要使用的字符串是“xbananay”,其中“x”和“y”可以是任意长度的字母或数字的任意组合。所以我的字符串可以只是“qrstbananag”,但也可以是“abcbanana12345”。
我想使用,并且只使用,javascript 的替换函数来替换除“banana”之外的所有内容。我已经有一些可以找到香蕉的正则表达式,但是当我想找到其他所有东西时,替换功能将按预期替换我正在寻找的东西。示例:
var fullString = "qrstbananag"
var strippedBanana = fullString.replace(/(?:banana)/g, ''); //returns qrstg
我还有一个正则表达式,几乎可以得到我要找的东西,但包括字符串“banana”中的所有字符。另一个例子:
var fullString2 = "abcbanana12345"
var strippedBanana = fullString2.replace(/[^(?:banana)]/g, ''); //returns abbanana
我如何仅使用替换功能来完成此操作?提前致谢。
最佳答案
你可以使用这个:
var test = 'abcbananad\nefbananaghi';
var result = test.replace(/(banana)|./gs, '$1');
console.log(result);
事情是匹配 banana 并将其放回带有 $1
的结果中。当 banana 不匹配时,下一个字符(.
,由于 s
标志也匹配换行符)不会在捕获中捕获组,因此不会包含在 $1
中。
注意:在支持 s
标志之前,您可以使用 [^]
或 [\S\s]
而不是 .
.
关于类(class)
在你的第二次尝试中你使用了
[^(?:banana)]
但请注意,类中的字符(在 [...]
之间)比其他情况更按字面意思对待。所以 (?:
被视为三个单独的字符,banana
的字符也是如此。你实际上是在说:删除任何不是这些字符的字符:()?:abn
.
关于javascript - 如何使用正则表达式替换指定字符串以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38132407/