0

我正在尝试使用 reg ex 修复内联 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 回答