我有一个Javascript错误已经报告给我,不幸的是我不知道如何重现它.IE8开发人员工具报告以下错误:意外的量词.以下行产生错误:
var g=RegExp(d+"=([^|]*)").exec(j); //output from closure-compiler
Run Code Online (Sandbox Code Playgroud)
我想我必须正确地逃避管道,\\|以解决问题,但我不知道我是否正确,因为我不知道如何重现错误.
欢迎任何建议或解决方案.
谢谢.
[UPDATE]
值d是__utmz我正在尝试检索的cookie值的键,它们列在这样的数组中["utmccn", "utmcmd", /* ... */].那么现在我没有那么多可以做,我和我的朋友流感在家.
"量词"是一个正则表达式运算符,如*或+.上面代码中的变量"d"可能包含一些被解释为正则表达式解析器的"代码"的东西,它是无效的.你是对的,它需要被适当地转义.这是一个非常类似于转义包含在HTML标记中的文本问题的问题,但是因为所讨论的语法完全不同(即正则表达式语法与HTML语法)不同.
正则表达式语法中有很多特殊字符,显然,所以这需要一个相当粗糙的正则表达式.这是一种可能的方法来做这样的事情:
var quoted = unquoted.replace(/([*+.?|\\\[\]{}()])/g, '\\$1');
Run Code Online (Sandbox Code Playgroud)
这可能不会得到所有这些; 我会四处寻找代码,这些代码比我刚刚组成的涂料更加经过测试:-)
由于您发布的代码看起来可能来自某个库,您可能需要检查IE调试器中的堆栈跟踪以找出问题的起始位置.
| 归档时间: |
|
| 查看次数: |
9905 次 |
| 最近记录: |