私は、文字列を持っていると私は彼らの適切な値にすべて'
となどを交換する必要がJavascript文字のセットを見つけて置き換えますか?
私はそうするために
var replace = str.replace(new RegExp("[']", "g"), "'");
を使用していますが、問題は、それが'
を交換しているように見えるです各文字(例えば、'
は、すべてのヘルプ'''''
なりそう?
私は、文字列を持っていると私は彼らの適切な値にすべて'
となどを交換する必要がJavascript文字のセットを見つけて置き換えますか?
私はそうするために
var replace = str.replace(new RegExp("[']", "g"), "'");
を使用していますが、問題は、それが'
を交換しているように見えるです各文字(例えば、'
は、すべてのヘルプ'''''
なりそう?
の使用のためにこれは:
var str = str.replace(/'/g, "'");
[']
は文字クラスです。中括弧の中のいずれかの文字を意味するを意味します。
これは、/[']/
正規表現が'
のすべての単一の文字を置換文字列で置き換える理由です。
あなたの代わりにリテラル正規表現のnew RegExp
を使用する場合:
var str = str.replace(new RegExp(''', 'g'), "'");
これは、実行時に正規表現を生成する場合を除いて、何のメリットがありません。文字クラスを作る
これらの両方ともエラー "Unterminated正規表現リテラル" – Steven
がここで動作するように見えます:http://jsfiddle.net/TC5he/ – arnaud576875
ブラケットを取り出し、(その中の任意の文字が一致する):
var replace = str.replace(/'/g, "'");
編集:これを参照してください
var replace = str.replace(new RegExp("'", "g"), "'");
またはより良いを、リテラルの使用HTMLをエスケープする方法に関する質問:How to unescape html in javascript?
これらはどちらもエラー "Unterminated Regular Expression Literal"を生成するようです。 – Steven
@Steven Howあなたはそれを使用していますか? –
これに代えて正規表現を置き換えるのではなく、これを
function HtmlDecode(s) {
var el = document.createElement("div");
el.innerHTML = s;
return el.innerText || el.textContent;
}
+1良いアイデア...あなたは 'delete el;'を呼び出す必要はありませんが(これは効果がなく、strictモードでもエラーをスローします)。あなたは 'return el.innerText || el.textContent; ' –
ヒントをありがとう、編集しました。 –
エラーは '[]'を使用しています。あなたがそれらを削除する場合、それは動作するはずです。またはarnaudが提案するように、よりコンパクトなJS表記を使用してください。 – xanatos