javascript - 如何使用正则表达式和 '\' 字符正确解析 JSON?

标签 javascript regex node.js

给出以下代码:

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));

最佳答案

JSON 不接受正则表达式作为类型。因此,您只需将正则表达式放入一个字符串中(以/开头,以/结尾,然后在解析它之后,您需要将正则表达式提供给 new RegExp(str) 以将其转换为正则表达式。

你可以这样做:

var a = 'somegarbage=http://somesite.com/foo/bar/&moregarbage';
var x = JSON.parse('{"filter":"http.+/", "flags": "g"}');
x.filter = new RegExp(x.filter, x.flags);
var result = a.match(x.filter);
alert(result);​

此处的工作示例:http://jsfiddle.net/jfriend00/5pa2j/

关于javascript - 如何使用正则表达式和 '\' 字符正确解析 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099277/

相关文章:

javascript - 如何在 Sails.js v0.11 中触发自定义套接字事件?

javascript - Imacros/jQuery TypeError : can't access dead object, 第 816 行(错误代码:-991)

javascript - 我的网站使 Firefox 崩溃。我该怎么办?

c# - 正则表达式 - 替换一些 html 标签

node.js - 无法使用 npm 安装 opencv

javascript - MongoDB 检查列表中的多个正则表达式匹配以进行自由文本搜索

javascript - 应该如何对两个 Ajax 调用的结果进行计算?

java正则表达式从具有两个方差的字符串中提取数字

.net - 正则表达式返回最后十三位数字的前十二位?

javascript - 如何在 Sails.js 上向本地添加配置设置