あなたは中括弧なしでエリアを選択したい場合は、このメソッドを使用するようにしてください:
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}"]
このアルゴリズムが間違っていると、速く動作します。より多くのテストケースを提供してください。
何をすべきか? – Akxe
ブラウザをハングして適切な結果を返してはいけません。このケースでは、 "{parent-area-label}"と一致し、以前のトークンを無視する必要があります。 –
http://regexr.com/でテキストが書かれていて、正しく動作するようです....更新:例でチェックしてタイムアウトが報告されました – maborg