Javascript 修复json.parse regex中JQuery-1.4.1和json-2.0的冲突$&引用;性格
升级到jQuery1.4.1后,我注意到每当我尝试调用json.parse时都会出现错误。这个问题是json中使用的正则表达式的一部分。它在模式中使用的$与JQuery的$快捷方式冲突 我不想在jquery中使用非冲突选项,因为我有很多地方需要用新的快捷方式替换$ 有没有一种方法可以将正则表达式模式用单引号括起来,这样就可以将模式字符串按字面上的字符串处理 json-2.0.js中的断节:(在$上失败) 谢谢 更新: 问题并不像看上去的那样,与Javascript 修复json.parse regex中JQuery-1.4.1和json-2.0的冲突$&引用;性格,javascript,jquery,regex,json,Javascript,Jquery,Regex,Json,升级到jQuery1.4.1后,我注意到每当我尝试调用json.parse时都会出现错误。这个问题是json中使用的正则表达式的一部分。它在模式中使用的$与JQuery的$快捷方式冲突 我不想在jquery中使用非冲突选项,因为我有很多地方需要用新的快捷方式替换$ 有没有一种方法可以将正则表达式模式用单引号括起来,这样就可以将模式字符串按字面上的字符串处理 json-2.0.js中的断节:(在$上失败) 谢谢 更新: 问题并不像看上去的那样,与$冲突无关。从OP: 错误发生在test.repla
$
冲突无关。从OP:
错误发生在test.replace上,因为传入的对象已被反序列化,因此找不到方法
replace
。我猜升级到JQuery 1.4.1在$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化
您是否确定它在
$
上出现故障,并且是出于这个原因?因为如果是这样的话,那将是一个巨大的命名空间/解析失败。根本没有理由让JavaScript引擎在那里寻找外部符号。它已经按照您询问的方式进行了封装(通过斜杠,它实际上是正则表达式的引号)。如果这真的是问题所在,那么它会像解释器被字符串中的一个$噎住一样令人惊讶。我认为你的问题在别处。你确定它在$
上失败了吗?因为如果是这样的话,那将是一个巨大的命名空间/解析失败。根本没有理由让JavaScript引擎在那里寻找外部符号。它已经按照您询问的方式进行了封装(通过斜杠,它实际上是正则表达式的引号)。如果这真的是问题所在,那么它会像解释器被字符串中的一个$噎住一样令人惊讶。我认为你的问题出在其他地方。这里有一个页面拉入jQuery 1.4.1和json2.js,它调用JSON.parse(),没有异常或错误:这里有一个页面拉入jQuery 1.4.1和json2.js,它调用JSON.parse(),并且它没有异常或错误:错误在测试中爆炸。replace
传入的对象已经反序列化,因此找不到方法replace
。我猜升级到JQuery 1.4.1在$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化
应删除此问题
很显然,这个问题不能随着所建议的答案的数量而被删除 测试时出错。替换传入的对象已反序列化,因此找不到方法
replace
。我猜升级到JQuery 1.4.1在$.ajax
函数的成功事件中处理结果对象的方式发生了一些变化
应删除此问题
很显然,这个问题不能随着所建议的答案的数量而被删除 你有多确定这是真的?这看起来很有意思,因为美元在语法上与用作jQuery函数标识符的“$”不同。就像有一个名为“foo”的变量一样,regex/foo/不会被混淆。当你说它“失败”时,到底会发生什么?当我回滚对jquery-1.3.2.js的引用时,我没有这个问题。我已经签入了firebug和VS2008.net的js调试器。他们都认为模式中的$是JQuery对象。我用新的库运行了我的大型JQuery站点,到处都是带有美元符号的正则表达式,我一点问题都没有。Firebug到底告诉了你什么,或者说做了什么,让你认为$regex特殊字符实际上就是jQuery对象?当你说“json.parse”时,你是指“$.parseJSON()”还是你在使用其他json库?@Pointy:我想他/她在使用json-2.0.js。你有多确定会发生这种情况?这看起来很有意思,因为美元在语法上与用作jQuery函数标识符的“$”不同。就像有一个名为“foo”的变量一样,regex/foo/不会被混淆。当你说它“失败”时,到底会发生什么?当我回滚对jquery-1.3.2.js的引用时,我没有这个问题。我已经签入了firebug和VS2008.net的js调试器。他们都认为模式中的$是JQuery对象。我用新的库运行了我的大型JQuery站点,到处都是带有美元符号的正则表达式,我一点问题都没有。Firebug到底告诉了你什么,或者做了什么,让你认为$regex特殊字符实际上就是jQuery对象?当你说“json.parse”时,你是指“$.parseJSON()”还是你在使用其他json库?@Pointy:我想他/她在使用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, ''))) {
.....
}