这是使用正则表达式(和嵌套括号问题)的替代方法,类似于@ kmoerman的这个答案,但该函数返回true
orfalse
并采用可选参数,因此您可以测试 say{
和}
Javascript
function testParenthesisPairs(string /*, openChar, closeChar */ ) {
var length = string.length,
i = 0,
count = 0,
openChar = arguments[1] || "(",
closeChar = arguments[2] || ")";
while (i < length) {
char = string.charAt(i);
if (char === openChar) {
count += 1;
} else if (char === closeChar) {
count -= 1;
}
if (count < 0) {
return false;
}
i += 1;
}
return count === 0;
}
console.log(testParenthesisPairs("()()()()"));
console.log(testParenthesisPairs("()()()()", "(", ")"));
console.log(testParenthesisPairs("()()()("));
console.log(testParenthesisPairs(")()()()"));
console.log(testParenthesisPairs(")(()()()"));
输出
真真假假假
在jsfiddle 上
更新:也类似于@Jon在评论中指出的@Damask的这个答案。