0

入力フィールドで書き換えられるように正規表現を使用してインライン JavaScript スニペットを修正しようとしています。

内側の二重引用符を囲む単一引用符があり、内部引用符を二重引用符ではなく単一引用符に変換したいのですが、コードがネストされた引用符として表示される場合にのみ変換したいと考えています。

現在、動作する引用のすべてのインスタンスの変換を行っていますが、別の問題が発生する可能性があります。以下にコードを添付します。

JavaScript

$(document).ready(function() {
    $('.submit').bind('click', function(e) {
        var yourstring = $("textarea").val();
        yourstring = yourstring.replace(/'/g, "''");
        yourstring = yourstring.replace(/&quote;/g, "\"");
        yourstring = yourstring.replace(/&lquote;/g, "\"");
        yourstring = yourstring.replace(/&rquote;/g, "\"");
        yourstring = yourstring.replace(/&#34/g, "\"");
        yourstring = yourstring.replace(/“/g, "\"");
        yourstring = yourstring.replace(/”/g, "\"");
        yourstring = yourstring.replace(/"/g, "\"");
        alert(yourstring)
    });
});​

HTML

<textarea style="width:400px;height:300px;">
function('');

<a onclick="$(".text").append('test');">Click Me</a>
<br/>
&lquote;test quotes&rquote;

&quot; generic quotes &quot;
</textarea>

<input type="submit" class="submit">

より具体的には、取得しようとしています

<a onclick="$(".text").append('test');">Click Me</a>

のように見えるように

<a onclick="$('.text').append('test');">Click Me</a>
4

1 に答える 1

0

提供された例は、データベースとは何の関係もないように見えますが、onclick属性内の JavaScript コードに問題があります。そのコードには実際には有効な構文がありませんが、HTML コード用の何らかのエディターを作成しようとしていると思います。

上記のコメントの推奨事項に従わない場合 (私も同意します)、質問に答えるために、すでに二重引用符で囲まれているテキストの二重引用符を削除するオプションがあります。

var s = "<a onclick=\"$(\".text\").append('test');\">Click Me</a>";
var re = /"(.*)"/g;
var r = s.replace(re, function($0, $1) { return '"' + $1.replace(/"/g, "''") + '"'; });
console.log(r);
​
于 2012-12-10T18:20:22.703 に答える