为此,我一直在浏览和查看stackoverflow,但我没有运气。
我想要使用的字符串是" xbananay",其中' x'并且' y'可以是任意长度的字母或数字的任意随机组合。所以我的字符串可能只是" qrstbananag",但它也可能是" abcbanana12345"例如。
我想使用并且仅使用,javascript的替换功能来替换所有内容但是" banana"。我已经有了一些可以找到香蕉的正则表达式,但是当我想要找到其他所有内容时,替换函数将会取代我想要的内容。例如:
var fullString = "qrstbananag"
var strippedBanana = fullString.replace(/(?:banana)/g, ''); //returns qrstg
我还有一个正则表达式,表示ALMOST可以获取我想要的内容,但包含字符串中的所有字符" banana"。另一个例子:
var fullString2 = "abcbanana12345"
var strippedBanana = fullString2.replace(/[^(?:banana)]/g, ''); //returns abbanana
如何仅使用替换功能完成此操作?提前谢谢。
答案 0 :(得分:10)
你可以用这个:
var test = 'abcbananadefbananaghi';
var result = test.replace(/(banana)|[^]/g, '$1');
console.log(result);
要匹配 banana 并将其放回$1
的结果中。当 banana 不匹配时,下一个字符([^]
,也匹配换行符)不会在捕获组中捕获,因此不会包含在$1
中
您可以使用[^]
代替[\S\s]
:同样的行为。
在您的第二次尝试中,您使用了
[^(?:banana)]
但请注意,类中的字符([...]
之间)的字面处理比其他情况更严格。因此,(?:
被视为三个单独的字符,banana
的字符也是如此。你实际上在说:删除任何不属于这些字符的字符:()?:abn
。