【问题标题】:regexp to get value inside [:(value here):]正则表达式在 [:(value here):] 中获取值
【发布时间】:2014-12-03 02:59:37
【问题描述】:

我有以下字符串

var str = ":[:{Business AddressId@Business_Address/(:[:(Street Address):] :[:(City):], :[:(State):] :[:(Postal Code):] :[:(Country):])}:]";

我必须从 [:( ):] 中提取值。这样我就可以获得一组值 [Street Addess, City, State, Postal Code, Country]。到目前为止,我有以下正则表达式

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

代码

var s = str.match(/\[\:\((.*?)\)\:\]\)/g)
console.log(s)

返回

["[:(街道地址):] :[:(城市):], :[:(州):] :[:(邮政编码):] :[:(国家):])"]

这不是我真正需要的,而且我不太擅长正则表达式。

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    只需从您的正则表达式中删除最后一个 \) 并从组索引 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' ]
    

    【讨论】:

      【解决方案2】:
      var arr = str.match(/:\(([^)]+)\):/g).map(function(x){
        return x.replace(/:|\(|\)/g,"");
      });
      console.log(arr); // ["Street Address", "City", "State", "Postal Code", "Country"]
      

      上面的就可以了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多