在Javascript中我想代表全2個括號之間的文本字符串,即使該字符串包含更多的括號內的文字。獲取括號
它的工作如下:
「(A)(B)(C)」 匹配(東西);
[ 「一」, 「B」, 「C」]
OR
「一」
「((A)(B )(c))「。match(SOMETHING);
「(一)(二)(三)」
在Javascript中我想代表全2個括號之間的文本字符串,即使該字符串包含更多的括號內的文字。獲取括號
它的工作如下:
「(A)(B)(C)」 匹配(東西);
[ 「一」, 「B」, 「C」]
OR
「一」
「((A)(B )(c))「。match(SOMETHING);
「(一)(二)(三)」
你關心的括號匹配? 如果是這樣,你將不得不使用正則表達式來使用堆棧。
嘗試這樣:
var str = "aaa((0)12(2))bbb";
var stack = [];
var result ="";
var start = false;
for (var i = 0; i < str.length; i++) {
switch (str[i]) {
case '(':
stack.push('(');
if (!start) {
start = true;
continue;
}
result += str[i];
break;
case ')':
if (stack[stack.length - 1] === '(') {
stack.pop();
if (stack.length === 0) {
start = false;
continue;
}
result += str[i];
} else {
//not balanced!
}
break;
default:
if (start){
result += str[i];
}
}
}
console.log(result);
什麼你嘗試這麼遠嗎? –
/\(([^)] +)\)/ - 但它返回[ 「((A)」, 「(一個」]爲字符串 「((A)(B)(C))」 – JOster
I」敢肯定這樣的語言是不規律的,因爲識別引擎將需要一個堆棧(或以其他方式使用的內存不恆定的量)。正則表達式是不太可能是這項工作的正確工具。 – apsillers