从RegExp中删除子串之间的字符串

时间:2015-10-08 05:06:52

标签: javascript regex xregexp

我写这段代码来删除' a'到了' c'

var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);

控制台中的结果是" bbd"

但适合我的结果是" bbabbd"

我可以在这个问题上使用正则表达式吗?

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

a(?:(?!a).)*c

使用基于lookahead的regex.See演示。.*?也会在a之后使用a。要停止使用lookahead。< / p>

https://regex101.com/r/cJ6zQ3/34

编辑:

a[^a]*c

您实际上可以使用negated character class,因为您只有1个字符。

答案 1 :(得分:1)

g表示它是一个全局正则表达式,这意味着它会获取字符串中的abcabbabc。因此,这可以正确删除a..c中的项目。您似乎只看到了两个abc而错过了abbabc。结果bbd实际上是正确的,因为它确实&#34;从&#39; a&#39;删除字符串到&#39;&#39;&#34;

  

<击> abc bb <击> abbabc d => bbd

答案 2 :(得分:0)

您需要将正则表达式更新为 a[^ac]*?c ,这样可以避免ac之间的字符ac

&#13;
&#13;
var str = "abcbbabbabcd";
var re = new RegExp("a[^ac]*?c","gi");
str = str.replace(re,"");
console.log(str);
&#13;
&#13;
&#13;

Regular expression visualization

答案 3 :(得分:0)

这是另一种方式。

CGPathContainsPoint