如果你想选择一个没有花括号的区域,可以尝试使用以下方法:
var temp = "{=rankedArea?metricType=3902&area={parent-area-identifier}:AdministrativeWard} {=rankedArea?metricType=3902&area={parent-area-identifier}:{ward-type-identifier}} {district-short-label} adfasdfasdfasdf asdf asdf asdf asdf {child-area-short-label} asdf asdf asdf {authority-area-short-label} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=compare?metricType=3343&greater=greater than&equal=equal to&less=less than} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=countAreas?area={ancestor-2-identifier}:{ancestor-1-type-identifier}} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=equivalent?metricDimension=[218][218_Number][Specificethnicity][Ethnicity_AsianorAsianBritish]} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf {=metricTypeMetadata?metricType=3341&returnValue=source} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=value?metricType=3284} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=percent?metricType=518} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=rank?metricType=3287} asdfasdfasdfasdf asdf asdfasdfasdfasdf asdf{=rankedArea?metricType=3286} asdfasdfasdfasdf asdf";
var strRegExp = new RegExp(/{(?:[^{}]+|{[^{}]*})*}/g);
var arrMatch = temp.match(strRegExp);
console.log(arrMatch.length);
console.log(arrMatch);
结果:
13
["{=rankedArea?metricType=3902&area={parent-area-identifier}:AdministrativeWard}",
"{=rankedArea?metricType=3902&area={parent-area-identifier}:{ward-type-identifier}}",
"{district-short-label}",
"{child-area-short-label}",
"{authority-area-short-label}",
"{=compare?metricType=3343&greater=greater than&equal=equal to&less=less than}",
"{=countAreas?area={ancestor-2-identifier}:{ancestor-1-type-identifier}}",
"{=equivalent?metricDimension=[218][218_Number][Specificethnicity][Ethnicity_AsianorAsianBritish]}",
"{=metricTypeMetadata?metricType=3341&returnValue=source}", "{=value?metricType=3284}",
"{=percent?metricType=518}",
"{=rank?metricType=3287}",
"{=rankedArea?metricType=3286}"]
它运行速度快,如果该算法不正确,请提供更多的测试用例。
RegExp
构造函数,当你已经有一个正则表达式文本时。 - Bergi