考慮下面的代碼:如何正確解析與RegEx和''字符的JSON?
var a = 'somegarbage=http://somesite.com/foo/bar/&moregarbage';
var result = a.match(/http.+\//g);
產生預期的結果:["http://somesite.com/foo/bar/"]
現在,如果我這樣做:
var a = 'somegarbage=http://somesite.com/foo/bar/&moregarbage';
var config = JSON.parse('{"filter":"/http.+\\//g"}'); //notice the extra '\'?
var result = a.match(config.filter);
返回null。我認爲它與JSON中的字符串轉義\
有關。我覺得我錯過了一個簡單的解決方案。我怎樣才能解決這個問題?謝謝。
編輯:
我也嘗試這樣做,這是行不通的:
var a = 'somegarbage=http://somesite.com/foo/bar/&moregarbage';
var config = JSON.parse('{"filter":"/http.+\\//g"}'); //notice the extra '\'?
var result = a.match(new RegExp(config.filter));
你可以在我的示例代碼,它是一個字符串看,所以我不太明白? – 2012-04-11 03:20:23
是的,它是一個字符串,不是一個正則表達式,'JSON.parse()'不會將您的字符串轉換爲正則表達式。因此,當你傳遞'「/ http。+ \\ // g」'來匹配時,它會嘗試將其轉換爲正則表達式,並且不匹配字符串中的任何內容。查看我添加到我的答案的代碼,以便使其工作。 – jfriend00 2012-04-11 03:25:38