我有一个跟随字符串
var str = ":[:{Business AddressId@Business_Address/(:[:(Street Address):] :[:(City):], :[:(State):] :[:(Postal Code):] :[:(Country):])}:]";
我必须从[:():]中提取值。这样我就可以获得一系列价值[街头地址,城市,州,邮政编码,国家]。到目前为止,我已经获得了以下正则表达式
/\[\:\((.*?)\)\:\]\)/g
代码
var s = str.match(/\[\:\((.*?)\)\:\]\)/g)
console.log(s)
返回
["[:(Street Address):] :[:(City):], :[:(State):] :[:(Postal Code):] :[:(Country):])"]
这不完全是我所需要的,而且我对正则表达式并不是很好。
答案 0 :(得分:3)
只需从正则表达式中删除最后一个\)
,然后从组索引1中获取所需的字符串。
\[:\((.*?)\)\:\]
> var str = ":[:{Business AddressId@Business_Address/(:[:(Street Address):] :[:(City):], :[:(State):] :[:(Postal Code):] :[:(Country):])}:]";
> var re = /\[:\((.*?)\)\:\]/g;
> var m;
> var a=[];
undefined
> while ((m = re.exec(str)) != null) {
... a.push(m[1]);
... }
5
> a
[ 'Street Address',
'City',
'State',
'Postal Code',
'Country' ]
答案 1 :(得分:2)
var arr = str.match(/:\(([^)]+)\):/g).map(function(x){
return x.replace(/:|\(|\)/g,"");
});
console.log(arr); // ["Street Address", "City", "State", "Postal Code", "Country"]
以上都可以。