修复json.parse regex中的JQuery-1.4.1和json-2.0冲突与“$”字符的冲突

时间:2010-02-07 15:42:46

标签: javascript jquery regex json

升级到jquery 1.4.1后,我注意到我试图调用json.parse时出现错误。该问题是json中使用的正则表达式的一部分。它在与JQuery的$快捷方式冲突的模式中使用$。

我不想在jquery中使用非冲突选项,因为我有很多地方我必须用新修正的快捷方式替换$。

有没有办法用单引号或其他东西包装正则表达式模式,以便模式字符串按字面意思处理为字符串?

json-2.0.js中的断面:(在$上失败)

if (/^[\],:{}\s]*$/.
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
.....
}

由于

更新

问题并非出现,与$冲突无关。来自OP:

  

错误是test.replace上的爆炸,因为传入的对象已经反序列化,因此找不到方法replace。我想升级到JQuery 1.4.1对$.ajax函数的成功事件处理结果对象的方式有一些改变。

3 个答案:

答案 0 :(得分:3)

肯定它在$失败了吗?因为这个原因?因为这是一个巨大的命名空间/解析失败,如果是这样的话。完全没有理由JavaScript引擎应该在那里寻找外部符号。它的已经封装了你所询问的方式(通过斜杠,这是正则表达式的有效引号)。如果这确实是问题所在,那就像解释器在一个字符串内部窒息一样令人惊讶。我认为你的问题出在其他地方。

答案 1 :(得分:1)

这是一个引入jQuery 1.4.1和json2.js的页面,它调用JSON.parse(),它没有异常或错误:http://gutfullofbeer.net/json.html

答案 2 :(得分:0)

错误是test.replace上传入的对象已被反序列化,因此未找到方法replace。我想升级到JQuery 1.4.1会对$.ajax函数的成功事件处理结果对象的方式进行一些更改。

应删除此问题

显然,此问题无法通过建议的答案数量删除。