JavaScript正则表达式匹配,包括空行

时间:2015-11-10 17:21:28

标签: javascript regex

如何使用javascript正则表达式在name=之间进行匹配,包含下一个空白行,并在下一行中包含第一个单词。

至此,最终得到以下三场比赛

  1. “fieldA”value1

  2. “fieldB”value2

  3. “fieldC”value3

    undefined------WebKitFormBoundaryaP6MZ2PjlD5N249N
    Content-Disposition: form-data; name="fieldA"
    
    value1
    ------WebKitFormBoundaryaP6MZ2PjlD5N249N
    Content-Disposition: form-data; name="fieldB"
    
    value2
    ------WebKitFormBoundaryaP6MZ2PjlD5N249N
    Content-Disposition: form-data; name="fieldC"
    
    value3
    
  4. 我试过了

     var regExp = /name=(.*)/g,
     meta = [],
     matches = data.match(regExp);
    

    但这导致'name="fieldA"'

    我想捕获最多值,并排除实际的'name ='

    提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用以下正则表达式

Regex101 Live Demo

/name="(\w+)"\n+(\w+)/
  1. name=":按字面意思匹配
  2. "(\w+)":匹配用双引号括起来的字母数字字符串并添加第一个捕获的组
  3. \n+:匹配一个或多个换行符。在这种情况下,也可以使用\n{2}
  4. (\w+):第二个被捕获的小组
  5. 要访问捕获的组,请使用带有全局标记的RegExp#exec

    var obj = {};
    var regex = /name="(\w+)"\n+(\w+)/g;
    while(m = regex.exec(str)) {
        obj[m[1]] = m[2];
    }
    console.log(obj);
    

    
    
    var str = 'undefined------WebKitFormBoundaryaP6MZ2PjlD5N249N\
    Content-Disposition: form-data; name="fieldA"\
    \
    value1\
    ------WebKitFormBoundaryaP6MZ2PjlD5N249N\
    Content-Disposition: form-data; name="fieldB"\
    \
    value2\
    ------WebKitFormBoundaryaP6MZ2PjlD5N249N\
    Content-Disposition: form-data; name="fieldC"\
    \
    value3';
    
    var obj = {};
    
    // Changed the regex to use `\n*` for Demo Purpose
    var regex = /name="(\w+)"\n*(\w+)/g;
    
    while (m = regex.exec(str)) {
      obj[m[1]] = m[2];
    }
    console.log(obj);
    
    
    

答案 1 :(得分:0)

您可以使用这个基于前瞻性的正则表达式:

/\bname=([\S\s]*?)(?=\s*-{6}|$)/gi

RegEx Demo

这将匹配从name=到6个连字符或文件结尾。