如何使用javascript正则表达式在name=
之间进行匹配,包含下一个空白行,并在下一行中包含第一个单词。
至此,最终得到以下三场比赛
“fieldA”value1
“fieldB”value2
“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
我试过了
var regExp = /name=(.*)/g,
meta = [],
matches = data.match(regExp);
但这导致'name="fieldA"'
我想捕获最多值,并排除实际的'name ='
提前谢谢。
答案 0 :(得分:0)
使用以下正则表达式
/name="(\w+)"\n+(\w+)/
name="
:按字面意思匹配"(\w+)"
:匹配用双引号括起来的字母数字字符串并添加第一个捕获的组\n+
:匹配一个或多个换行符。在这种情况下,也可以使用\n{2}
。(\w+)
:第二个被捕获的小组要访问捕获的组,请使用带有全局标记的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)