Javascript 如果在括号内则要排除的正则表达式
Javascript regex to exclude if inside brackets
我正在尝试在字符 +*() 上拆分表达式字符串,但如果它们不在括号内,我只需要在那里拆分。我正在努力为此任务创建正确的正则表达式。
示例:
.N.TESTARRAY[INT1+2] + ONLINE * Whosebug
我想生成一个数组,例如:
[ ".N.TESTARRAY[INT1+2]" , "ONLINE" , "Whosebug" ]
目前我的正则表达式拆分字符 +*()[]
split(/(\+|\*|\[|\]|\(|\))/g)
因为我也在方括号上拆分,所以我循环遍历数组并合并括号内的任何内容。我认为这很笨拙,我想将其全部移至正则表达式中。
function mergeInnerBrackets(tokens) {
var merged = [];
var depth = 0;
for(var i = 0; i < tokens.length; i++) {
if(tokens[i] == "[") {
depth++;
merged[merged.length-1] += "[";
} else if(tokens[i] == "]") {
depth--;
merged[merged.length-1] += "]";
} else if(depth > 0) {
merged[merged.length-1] += tokens[i];
} else {
merged.push(tokens[i]);
}
}
return merged;
}
我正在使用 JavaScript 并且需要能够支持回 IE8。我还读到了一些关于能够在背后看消极的情况下做到这一点的内容,但我看到 JavaScript 不支持这一点。
字符串也可以像 .N.TEST[INT1+2] + ON[INT1] * ON[INT2]
吗?我宁愿使用 regex like this.
\s*[+*)(](?![^[]*])\s*
如果字符串可以包含一对以上的[
...]
var str = '.N.TEST[INT1+2] + ON[INT1] * ON[INT2]';
console.log(str.split(/\s*[+*)(](?![^[]*])\s*/));
我正在尝试在字符 +*() 上拆分表达式字符串,但如果它们不在括号内,我只需要在那里拆分。我正在努力为此任务创建正确的正则表达式。
示例:
.N.TESTARRAY[INT1+2] + ONLINE * Whosebug
我想生成一个数组,例如:
[ ".N.TESTARRAY[INT1+2]" , "ONLINE" , "Whosebug" ]
目前我的正则表达式拆分字符 +*()[]
split(/(\+|\*|\[|\]|\(|\))/g)
因为我也在方括号上拆分,所以我循环遍历数组并合并括号内的任何内容。我认为这很笨拙,我想将其全部移至正则表达式中。
function mergeInnerBrackets(tokens) {
var merged = [];
var depth = 0;
for(var i = 0; i < tokens.length; i++) {
if(tokens[i] == "[") {
depth++;
merged[merged.length-1] += "[";
} else if(tokens[i] == "]") {
depth--;
merged[merged.length-1] += "]";
} else if(depth > 0) {
merged[merged.length-1] += tokens[i];
} else {
merged.push(tokens[i]);
}
}
return merged;
}
我正在使用 JavaScript 并且需要能够支持回 IE8。我还读到了一些关于能够在背后看消极的情况下做到这一点的内容,但我看到 JavaScript 不支持这一点。
字符串也可以像 .N.TEST[INT1+2] + ON[INT1] * ON[INT2]
吗?我宁愿使用 regex like this.
\s*[+*)(](?![^[]*])\s*
如果字符串可以包含一对以上的[
...]
var str = '.N.TEST[INT1+2] + ON[INT1] * ON[INT2]';
console.log(str.split(/\s*[+*)(](?![^[]*])\s*/));