我想解析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