0

実際に「問題」があると言うべきではありません (コードは動作しているように見えますが、おそらく環境上の理由により、コンソールでエラーが発生することがあります) が、コードの一部を取り出して、私はこれを見る:

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

「キー」は、この行を含む関数に渡されます。ご想像のとおり、最終的に干し草の山の針として使用される紐です。

何かをサニタイズしていますが、何をサニタイズしているのかわかりません(主に正規表現に流暢ではないためだと思います)。JSLintも何かについて吠えています(予期しない「]」)が、正規表現を解析していないため、誤検知だと思います。

スタック オーバーフローやコード レビューでこれを尋ねるかどうかはわかりませんでしたが、実際には「レビュー」ではないので、ここにあります。

正規表現タイプの人々からの洞察は大歓迎です。

4

2 に答える 2

5

私が正しければ[\[and]に置き換え\]られるので、基本的には角括弧のエスケープです。

于 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 に答える