2016-09-14 32 views
-5

をエスケープ私の文字列${field.value}JavaScriptの文字列内の単一引用符と二重引用符に

escapestring = '${field.value}' 

escapestring.replace("'", "\'"); 

document.getElementById("tblUserList").innerHTML = escapestring ; 

エラーである、それは私が欲しい

Uncaught SyntaxError: Invalid regular expression flags 

が動作していない何私が試した値

'<table id="tblUserList">    
     <tbody>     
     <tr> 
     <td style="padding: 10px;">some test' and "xyz"</td> 
     </tr> 
     </tbody 
     </table>' 

を持っていますsome test' and "xyz"

で一重引用符と二重引用符をエスケープする私は string safe for inserting into HTML table.

を更新しようとしています

:すべてのヘルプは高く評価されhttps://jsfiddle.net/e3jehrc5/1/

値がサーバから来ているが、私は、文字列内のHTML要素に

JSFIDDLEをスキップすることはできません。

+2

'escapestring = escapestring.replace(" '"、" \' ");' – Rajesh

+1

本当の[MCVE]を提供する必要があります。あなたは 'innerHTML'を使って値をフェッチしていますが、あなたのコード例では、ハードコードされた文字列リテラルを使用しようとしています...そして、コードのコンパイルを妨げるいくつかのエラーがあります。また、達成したいことを説明する必要があります。「エスケープ」は文脈でのみ意味があります。何のために脱出?あなたはSQLに挿入するための文字列を安全にしようとしていますか?あなたはそれをJSONに挿入するために安全にしようとしていますか?他に何か? – Quentin

+0

ブレーキを引っ張る...あなたは「innerHTML」からフェッチしているので、あなたは 'string = element.innerHTML'のようなものを持っていると仮定しています。そのシナリオでは、逃げるものはありません。文字列リテラルをエスケープする必要があるのは、文字列をJavascriptコードに記述する場合ですが、「innerHTMLからフェッチする」とは多少異なります。リテラル文字列で行う必要があります。 '... – deceze

答えて

-2

使用この

var escapestring ='<table id="tblUserList"><tbody><tr><td style="padding: 10px;">some test'+"'"+' and "xyz"</td></tr></tbody></table>'; 
0

ここで線の間に読んで...

escapestring = '${field.value}' 

私はいくつかのサーバー側のテンプレート言語は、ここで${field.value}の値を記入されて推測しています。まず、動的にJavascriptを動的に生成すべきではありません。このHTMLスニペットをAJAXなどでフェッチする方がはるかに良い方法でしょう。

あなたのサーバーはここで動的にJavascriptのソースコードを生成しているので、構文的に有効なコードをに作成する必要があります。今は、あなたが作っているものの構文上の要件に関係なく、文字列を別の文字列に貼り付けるのが難しいです。 Javascript自体は既に無効なので、これをJavascriptで修正することはできません。あなたのテンプレート言語は、有効なJavascriptになるように文字列を適切にエンコードする必要があります。それをどうやって行うかは、テンプレートシステムによって異なります。ここにPHPの例があります:

var html = <?= json_encode($field->value); ?>; 

ここでJSONエンコーディングは、ここで探しているすべての有効なJavaScriptリテラルを生成します。

The Great Escapism (Or: What You Need To Know To Work With Text Within Text)も参照してください。