像匹配嵌套括号这样的问题是不可能使用单个正则表达式来解决的。以下是我解决您问题的方法:
var myExpression = "cat";
var s = 'the cat {is cat { and} cat {and { another cat}}and cat } and another cat';
arr = s.split(/(?=(?:\b|\W))\s*/g);
document.writeln("<pre>split: " + arr + "</pre>");
//prints: the,cat,{,is,cat,{,and,},cat,{,and,{,another,cat,},},and,cat,},and,another,cat
var level=0;
for (i=0; i<arr.length; i++) {
if (level == 0 && arr[i] == myExpression)
document.writeln("<pre>Matched: " + arr[i] + "</pre>");
if (arr[i] == "{")
level++;
else if (arr[i] == "}")
level--;
}