我想解析Javascript中的!Name=John OR !Address="1234 Place Lane" AND tall
,如果前面有!
或其他简单字符串,则将“参数”提取为键/值。示例代码如下:正则表达式解析可能引用表示的参数
1 var input = '!Name=John OR !Address="1234 Place Lane" AND tall';
2 var params = input.match(/.../g); // <--?? what is the proper regex?
3 var i = params.length;
4 while(i--) {
5 params[i] = params[i].replace(/"/g."");
6 if(params[i].indexOf("!")==0) {
7 params[i] = params[i].substring(1);
8 // Address=1234 Place Lane
9 var position = params[i].indexOf('=');
10 var key = params[i].substring(0,position);
11 var value = params[i].substring(1+position);
12 params[i] = {"key": key, "value": value};
13 // {key: "Address", value: "1234 Place Lane"}
14 // {key: "Name", value: "John"}
15 }
16 }
17 // params = [ {key:"Name",value:"John"}, "OR", {...}, "AND", "tall" ];
相关问题:javascript split string on space or on quotes to array
这种问题通常更好地解决一个状态机,只是通过字符串通过char收集它遇到的碎片。 – jfriend00 2013-05-13 14:19:15
是否可以使用'json'而不是字符串解析? – 2013-05-13 14:19:15
*分隔关键字*只能是“或”或“与”?如果是的话,我宁愿将它们拆分并解析每个子字符串,而不是使用复杂的正则表达式。 – sp00m 2013-05-13 14:30:00