0

我不应该说我实际上有一个“问题”(代码似乎......工作?虽然有一次可能是由于环境原因导致控制台中的错误),但我正在挑选一段代码并我看到这个:

key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

“key”被传递到包含这一行的函数中。正如您所料,它是一根绳子,最终被用作大海捞针。

它正在消毒某些东西,但我无法弄清楚它在消毒什么(主要是因为我猜我对正则表达式没有任何流利)。JSLint 也在咆哮(意外的']'),但我认为这是误报,因为它没有解析正则表达式。

不确定在 Stack Overflow 或 Code Review 上问这个问题,但它不是真正的“审查”,所以在这里。

您的正则表达式类型的人的任何见解将不胜感激。

4

2 回答 2

5

如果我做对了,它会用 和 替换[\[所以]基本上\]是方括号的转义。

于 2012-04-23T14:40:01.580 回答
1

这些都做同样的事情(全球)

var key = 'a[b] [c] [][]d'.replace(/[\[]/g,"\\\[").replace(/[\]]/g,"\\\]"); 
print(key);
var key = 'a[b] [c] [][]d'.replace(/[\[]/g,'\\[').replace(/[\]]/g,'\\]'); 
print(key);
var key = 'a[b] [c] [][]d'.replace(/([\[\]])/g,"\\$1"); 
print(key);
于 2012-04-23T16:30:41.043 回答