2011-09-11 13 views
3

私は、文字列を持っていると私は彼らの適切な値にすべて'となどを交換する必要がJavascript文字のセットを見つけて置き換えますか?

私はそうするために

var replace = str.replace(new RegExp("[']", "g"), "'");

を使用していますが、問題は、それが'を交換しているように見えるです各文字(例えば、'は、すべてのヘルプ'''''

なりそう?

+0

エラーは '[]'を使用しています。あなたがそれらを削除する場合、それは動作するはずです。またはarnaudが提案するように、よりコンパクトなJS表記を使用してください。 – xanatos

答えて

9

の使用のためにこれは:

var str = str.replace(/'/g, "'"); 

[']は文字クラスです。中括弧の中のいずれかの文字を意味するを意味します。

これは、/[']/正規表現が'のすべての単一の文字を置換文字列で置き換える理由です。


あなたの代わりにリテラル正規表現のnew RegExpを使用する場合:

var str = str.replace(new RegExp(''', 'g'), "'"); 

これは、実行時に正規表現を生成する場合を除いて、何のメリットがありません。文字クラスを作る

+0

これらの両方ともエラー "Unterminated正規表現リテラル" – Steven

+0

がここで動作するように見えます:http://jsfiddle.net/TC5he/ – arnaud576875

6

ブラケットを取り出し、(その中の任意の文字が一致する):

var replace = str.replace(/'/g, "'"); 

編集:これを参照してください

var replace = str.replace(new RegExp("'", "g"), "'"); 

またはより良いを、リテラルの使用HTMLをエスケープする方法に関する質問:How to unescape html in javascript?

+0

これらはどちらもエラー "Unterminated Regular Expression Literal"を生成するようです。 – Steven

+0

@Steven Howあなたはそれを使用していますか? –

2

これに代えて正規表現を置き換えるのではなく、これを

function HtmlDecode(s) { 
     var el = document.createElement("div"); 
     el.innerHTML = s; 
     return el.innerText || el.textContent; 
    } 
+1

+1良いアイデア...あなたは 'delete el;'を呼び出す必要はありませんが(これは効果がなく、strictモードでもエラーをスローします)。あなたは 'return el.innerText || el.textContent; ' –

+0

ヒントをありがとう、編集しました。 –

関連する問題