我写这段代码来删除' a'到了' c'
var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
控制台中的结果是" bbd"
但适合我的结果是" bbabbd"
我可以在这个问题上使用正则表达式吗?
感谢您的帮助。
答案 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
表示它是一个全局正则表达式,这意味着它会获取字符串中的abc
和abbabc
。因此,这可以正确删除a..c
中的项目。您似乎只看到了两个abc
而错过了abbabc
。结果bbd
实际上是正确的,因为它确实&#34;从&#39; a&#39;删除字符串到&#39;&#39;&#34; 。
<击>
abc
击>bb
<击>abbabc
击>d => bbd
答案 2 :(得分:0)
您需要将正则表达式更新为 a[^ac]*?c
,这样可以避免a
和c
之间的字符a
和c
var str = "abcbbabbabcd";
var re = new RegExp("a[^ac]*?c","gi");
str = str.replace(re,"");
console.log(str);
&#13;
答案 3 :(得分:0)
这是另一种方式。
CGPathContainsPoint