2016-03-29 6 views
4
var strObj = '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{"text": true, ["text", "text", "text", "text"], [{ "text", "text" }]}\n\n\n' 

私は\nを除去することによって、文字列をサニタイズしようとしていますが、私は.replace(/\\\n/g, '')を行うときに、それをキャッチしていないようだから「\ n」を削除します。私はまた、Googleが検索し、見つかった:Javascriptを - 文字列

は、JavaScriptの正規表現の構文に従って..inあなたは、このような/\\//\\/gとしてあなたの正規表現リテラルに2つのバックスラッシュ文字を必要としています。

しかし、私はちょうどバックスラッシュをキャッチするために式をテストしても、それはfalseを返します。 (/\\\/g).test(strObj)

正規表現テスターは正しく\nをキャプチャ:http://regexr.com/3d3pe

+0

あなた.replaceの方法とタイプミスですか?それは '/ \\ n /'ではなく、 '/ \\ n /'でなければなりませんか? – char

+2

'/ \ n +/g'というバックスラッシュが1つだけ必要です。 http://stackoverflow.com/questions/784539/how-do-i-replace-all-line-breaks-in-a-string-with-br-tags – Tacocat

答えて

7

はちょうど

.replace(/\n/g, '') 

ない限りであるべき文字列は実際には

'\\n\\n\\n... 

それは

.replace(/\\n/g, '') 
2

だろうとあなたはバックスラッシュは必要ありません。

var strObj = '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{"text": true, ["text", "text", "text", "text"], [{ "text", "text" }]}\n\n\n'; 

strObj.replace(/\n/g, ''); 

このコードは期待どおりに動作します。

"{" テキスト ":真、[" テキスト " "テキスト"、 "テキスト"、 "テキスト"]、[{ "テキスト"、 "テキスト"}]}"

3

ここでRegExを使用する必要はなく、先頭と末尾のスペースを削除するにはString#trimを使用してください。

var strObj = '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{"text": true, ["text", "text", "text", "text"], [{ "text", "text" }]}\n\n\n'; 
 
var trimmedStr = strObj.trim(); 
 

 
console.log('Before', strObj); 
 
console.log('--------------------------------'); 
 
console.log('After', trimmedStr); 
 
document.body.innerHTML = trimmedStr;