Javascript正则表达式组合表达式

时间:2015-08-04 22:59:40

标签: javascript regex

目前我有两个表达式,我想要组合以及修复第二个表达式。表达式如下所示。脚本的输入如下:

Value/1.2 (Value; And Value Value Value 2_4_6) ValueAgain/3.5.7 (Value, Value Value) Value/4.6.8 Value/5.7.9
  1. /\(.*?\)/(获取括号外的所有文字)
  2. /\s*([\w]+?)\/([\d\w\W]+?)(\s+|\z)/g(将Value/1.2.b拆分为与此['Value', '1.2.b']相等的数组)
  3. 使用这些表达式,我目前运行以下脚本。

    var a = 'Value/1.2 (Value; And Value Value Value 2_4_6) ValueAgain/3.5.7 (Value, Value Value) Value/4.6.8 Value/5.7.9', b = /\s*([\w]+?)\/([\d\w\W]+?)(\s+|\z)/g, c = a.split(/\(.*?\)/);
    console.log(a, c);
    for(var i = 0; i < c.length; i++) {
        console.log('Exec: ', b.exec(c[i]), ' Split: ', c[i].split(b));
    }
    

    此脚本日志如下所示。

    Value/1.2 (Value; And Value Value Value 2_4_6) ValueAgain/3.5.7 (Value, Value Value) Value/4.6.8 Value/5.7.9 ["Value/1.2 ", " ValueAgain/3.5.7 ", " Value/4.6.8 Value/5.7.9"]
    Exec:  ["Value/1.2 ", "Value", "1.2", " "]  Split:  ["", "Value", "1.2", " ", ""]
    Exec:  ["n/3.5.7 ", "n", "3.5.7", " "]  Split:  ["", "ValueAgain", "3.5.7", " ", ""]
    Exec:  null  Split:  ["", "Value", "4.6.8", " ", "Value/5.7.9"]
    
    • 第二个表达式也应解析并拆分所有正斜杠,但在最后一个日志语句中,它仍未解析&#34; Value/5.7.9&#34;。
    • 正如我所提到的,如果可能,我还想将这些陈述合并为一个。

1 个答案:

答案 0 :(得分:0)

您可以将两个正则表达式转换为字符串并构建一个新表达式。例如:

var rega = /(.*?)/,
    regb = /(^[>]+)/,

regc = new RegExp
(
    rega.toString().toString().slice(1, -1) +
    regb.toString().toString().slice(1, -1),
    'g'
);

会导致regc成为/(.*?)(^[>]+)/g