如何使用正则表达式和“”字符正确解析 JSON
How to Properly Parse JSON with RegEx and '' character?
给定以下代码:
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);
它返回空值。我认为这与 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 不接受正则表达式作为类型。 因此,您只需将正则表达式放在字符串中(带有前导/和尾随/),然后在解析它之后,您需要将正则表达式提供给新的 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中,RegExp的/.../
语法是一种特殊的语法,而不仅仅是一个字符串。如果要将正则表达式存储为 JSON 中的字符串,则需要使用 RegExp 构造函数。
var config = JSON.parse('{"filter":"/http.+''//g"}');
var result = a.match(new RegExp(config.filter));
使用 RegExp
var a = 'somegarbage=http://somesite.com/foo/bar/&moregarbage';
var config = JSON.parse('{"filter":"http.+/"}');
var result = a.match(new RegExp(config.filter, "g"));
相关文章:
- 处理JSON字符串会导致JavaScript错误
- 元素名称上带有短划线 (-) 字符的 Json 对象
- AJAX语法错误:JSON.parse:意外字符
- 使用JSON.parse时出现无效字符javascript错误
- 用Objective-C将JSON解析成C风格的字符数组
- 解析 JSON 时出现无效字符错误
- 为什么 JSON.parse 给出无效的字符
- 代码点火器:搜索自动完成 JSON 解析意外字符
- 带有Ajax请求的Javascript JSON.parse函数n〃;新行转义字符
- json将字符转换为随机字符
- JSON.parse:意外字符
- 如何解析json中的特殊字符
- JSON.parse中存在无效字符
- SyntaxError:JSON.parse:登录脚本中出现意外字符
- 未捕获的语法错误:意外的标记-JSON字符编码
- JSON:处理textArea中的换行符(和其他无效的JSON字符)
- 在python "json"字符8192处随机插入逗号;从node.js调用的结果
- JSON字符编码与utf8
- JSON字符编码在javascript中不同于java
- 在IE中解析非常大的JSON字符串会导致问题