正则表达式在[:(这里的值)]中获取值:]

时间:2014-10-08 12:37:57

标签: javascript regex

我有一个跟随字符串

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):])"]

这不完全是我所需要的,而且我对正则表达式并不是很好。

2 个答案:

答案 0 :(得分:3)

只需从正则表达式中删除最后一个\),然后从组索引1中获取所需的字符串。

\[:\((.*?)\)\:\]

DEMO

> 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"]

以上都可以。