例如,它应与(aaa)
,((aaa))
,(((aaa)))
匹配,但不能与((aaa)
或(aaa))
匹配。
它甚至可能吗?
P.S。如果重要,我需要这个JavaScript的正则表达式。
答案 0 :(得分:1)
您所描述的语言是context free而不是regular language,因此没有这样的正则表达式。可以轻松地为此语言显示homomorphism到L={a^n * b^n}
,L
是众所周知的不规则语言。
有可能使用一些正则表达式扩展,但不能用于标准正则表达式,它最初用于常规语言。
答案 1 :(得分:1)
如果你愿意做多于正则表达式(我的意思是一点点),你可以使用这个功能。
check_parens('(((aaa)))');
check_parens('((aaa)))');
check_parens('aaa');
function check_parens(hay) {
var re = /(\(+)(?:[^)]+)(\)+)/g;
var matches = re.exec(hay);
if (matches === null || matches[1].length !== matches[2].length)
alert("Too bad...");
else
alert("We're good!");
}