Javascript 正则表达式不包含括号中的内容
我的目标是,正如标题所说的那样,将所有不在括号内的东西都包含在括号内,如下图所示:Javascript 正则表达式不包含括号中的内容,javascript,regex,replace,Javascript,Regex,Replace,我的目标是,正如标题所说的那样,将所有不在括号内的东西都包含在括号内,如下图所示: @tdWrap@ something here @tdWrapEnd@ 这就是我到目前为止所做的: var str = '1+[2/3]-23+2+<3,4,[22/7]+2;2,3,4>+2'; var indices = str.split(/\[[^\]]*\]|<[^>]*>/); var tdWrapper = []; for (var i = 0; i <
@tdWrap@ something here @tdWrapEnd@
这就是我到目前为止所做的:
var str = '1+[2/3]-23+2+<3,4,[22/7]+2;2,3,4>+2';
var indices = str.split(/\[[^\]]*\]|<[^>]*>/);
var tdWrapper = [];
for (var i = 0; i < indices.length; i++) {
tdWrapper[i] = '@tdWrap@' + indices[i] + '@tdWrapEnd@'
}
for (var i = 0; i < indices.length; i++) {
indices[i] = indices[i].replace(/([\+\-\*\?])/g, '\\$1')
}
var regObj;
for (var i = 0; i < indices.length; i++) {
regObj = new RegExp(indices[i]);
str = str.replace(regObj, tdWrapper[i])
}
var str='1+[2/3]-23+2++2';
var index=str.split(/\[^\]*\]\]\\]\\]\;]*>/);
var-tdWrapper=[];
对于(var i=0;i
问题是,当我在字符串中替换时,有一个重复的字符串,所以我不能替换正确的东西。这是我想要结束的字符串:
@tdWrap@1+@tdWrapEnd@[2/3]@tdWrap@-23+2+@tdWrapEnd@<3,4,[22/7]+2;2,3,4>@tdWrap@+2@tdWrapEnd@
@tdWrap@1+@tdWrapEnd@[2/3]@tdWrap@-23@tdWrap@+2@tdWrapEnd@+@tdWrapEnd@<3,4,[22/7]+2;2,3,4>+2
@tdWrap@1+@tdWrapEnd@[2/3]@tdWrap@-23+2+@tdWrapEnd@@tdWrap@+2@tdWrapEnd@
但这是我最后得到的字符串:
@tdWrap@1+@tdWrapEnd@[2/3]@tdWrap@-23+2+@tdWrapEnd@<3,4,[22/7]+2;2,3,4>@tdWrap@+2@tdWrapEnd@
@tdWrap@1+@tdWrapEnd@[2/3]@tdWrap@-23@tdWrap@+2@tdWrapEnd@+@tdWrapEnd@<3,4,[22/7]+2;2,3,4>+2
@tdWrap@1+@tdwrappend@[2/3]@tdWrap@-23@tdWrap@+2@tdWrapEnd@+@tdWrapEnd@+2
您可以使用replace
方法和闭包来完成。您需要将所有要跳过的内容放入捕获组中,以便按原样返回:
var str = '1+[2/3]-23+2+<3,4,[22/7]+2;2,3,4>+2';
var result = str.replace(/[0-9+*\/-]+|(\[[^\]]*\]|<[^>]*>)/g, function (m, g1) {
if (g1 == undefined) return '@tdWrap@' + m + '@tdWrapEnd@';
return g1;
});
console.log(result);
var str='1+[2/3]-23+2++2';
var result=str.replace(/[0-9+*\/-]+|(\[^\]*\]*\]\]\]*>)/g,函数(m,g1){
if(g1==未定义)返回'@tdWrap@'+m+'@tdwrappend@';
返回g1;
});
控制台日志(结果);
@VictorVH:注意,我没有在character类中添加问号,因为我不明白为什么它必须在这里,但是如果需要,可以添加它。如何调用该函数?m和g1是什么?@VictorVH:在每次匹配时调用该函数,m
包含整个匹配结果,g1
包含第一个捕获组结果。当模式在尖括号或方括号之间成功时,将定义第一个捕获组(和g1),并返回组内容。谢谢。你帮了大忙。你有这方面的文件吗?我好像找不到any@VictorVH:是官方文件: