Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从RegExp中删除子字符串之间的字符串_Javascript_Regex_Xregexp - Fatal编程技术网

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

Javascript 从RegExp中删除子字符串之间的字符串,javascript,regex,xregexp,Javascript,Regex,Xregexp,我编写此代码是为了将字符串从“a”删除到“c” var str = "abcbbabbabcd"; var re = new RegExp("a.*?c","gi"); str = str.replace(re,""); console.log(str); 控制台中的结果是“bbd” 但结果对我来说是“bbabbd” 我能用正则表达式解决这个问题吗 谢谢您的帮助。您需要将正则表达式更新为,这将避免a和c之间出现字符a和c var str=“abcbbabcd”; var re=新的RegEx

我编写此代码是为了将字符串从“a”删除到“c”

var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
控制台中的结果是“bbd”

但结果对我来说是“bbabbd”

我能用正则表达式解决这个问题吗


谢谢您的帮助。

您需要将正则表达式更新为,这将避免
a
c
之间出现字符
a
c

var str=“abcbbabcd”;
var re=新的RegExp(“a[^ac]*?c”、“gi”);
str=str.replace(re,“”);
console.log(str)
使用基于
lookahead
的正则表达式。请参阅演示。
*?
将在第一个
a
之后使用
a
。要停止它,请使用
lookahead

编辑:


实际上,您可以使用
求反字符类
,因为您只有1个字符。

g
表示它是一个全局regexp,这意味着它同时拾取字符串中的
abc
abbac
。这样就可以正确地从
a..c
中删除项目。您似乎只看到了两个
abc
,而错过了
ababc
。结果
bbd
实际上是正确的,因为它确实“将字符串从'a'删除到'c'”

abc
bb
abbac
d=>bbd

还有一个办法

var str = "abcbbabbabcd";
var str= str.replace(/abc/g, ""); 
console.log(str);

如果是单个字符,则使用否定字符类。这会将字符串从“a”正确删除为“c”。也许你的意思是从“a”到“c”但不包括“a”的字符串?如果是这样,请编辑问题,使其清晰。
a[^a]*c
var str = "abcbbabbabcd";
var str= str.replace(/abc/g, ""); 
console.log(str);