2011-07-29 16 views
0
var str = "test's t\r and t\n"; 
str = str.replace(/'/g, "\'"); 
str = str.replace(/\r/g, "\\r"); 
str = str.replace(/\n/g,"\\n"); 

これらの3つの置換は単一の文で行うことはできますか?単一の文での正規表現

私はこれらの特定の文字をエスケープしたいです。エスケープすると問題があります。次の行には\ n ""続く文字列が入ります。このパラメータをパラメータとして渡している間は、サーバでは「\ n」と認識されません。

+0

何語私たちが話していますか。 Javascript? –

+0

はい。 Javasciptのみ – Chinna

+0

btw、 "テスト"にはアポストロフィがありません(つまり、 "テストの"ではありません) – Bohemian

答えて

4

これを試してみてください:

str.replace(/'|\r|\n/g, function($0) { 
    var trans = {"\r":"r", "\n":"n"}; 
    return "\\" + (trans.hasOwnProperty($0) ? trans[$0] : $0); 
}) 
+0

それはうまく動作するfine.thx – Chinna

+0

+1私は交換を忘れて、第2引数として機能することができます。 – Paulpro

+0

どのような膨れのアイデア! – Monday

1
var str = "test's t\r and t\n"; 
    str = str.replace(/(\'|\r\n|\r|\n)/g, "\\"); 
    alert("++++++++++++"+str+"++++++++++++"); 
+0

かなりうまくいきません。 "\ n"は "\\ n"に置き換えられます。おそらく前方参照先;-) –

+0

文法エラーがあります –

+0

追加することを忘れました\ – K6t

2

あなたはまた、それらをチェーンすることができます

var str = "test's t\r and t\n"; 
str = str.replace(/'/g, "\'").replace(/\r/g, "\\r").replace(/\n/g,"\\n"); 
+0

+1してもうまくいきません。 – Paulpro

関連する問題