JavaScript正则表达式替换内部引号

JavaScript正则表达式替换内部引号,javascript,Javascript,我正在尝试修复一个带有reg ex的内联javascript代码段,该代码段将在输入字段上重写 我有单引号来包装内部双引号,我想将内部引号转换为单引号而不是双引号,但我只想在代码显示为嵌套引号时转换它们 现在,我正在对报价的所有实例进行转换,这很有效,但我可能会遇到另一个问题。我将在下面附上我的代码 JavaScript $(document).ready(function() { $('.submit').bind('click', function(e) { var

我正在尝试修复一个带有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


功能(“”);
点击我

&引述;测试报价&rquote; “通用引号”
更具体地说,我想知道

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

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

提供的示例似乎与数据库没有任何关系,但是
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);
​
var s=“单击我”;
变量re=/“(.*)”/g;
var r=s.replace(re,函数($0,$1){return''''+$1.replace(/“/g,'''+''”;});
控制台日志(r);
​

我知道尝试这样做有点奇怪,但我对数据库中的引号有问题。如果您的数据库代码易受SQL注入攻击,您应该解决这一问题,而不是让用户更难提交引号……数据库转义应该在服务器端完成,否则您会受到SQL注入攻击。不管怎样无论你做什么或你的客户是什么,无论你的Javascript做什么,你迟早都会遇到一个拥有正确工具的黑帽人。几乎每个黑帽人都有这些工具。同意@Jan和@Vicario。你不应该寻找这个问题的答案,因为设计本身是不正确的。此外,这也不好练习与html内联使用jQuery。您可以使用事件侦听器,而不是
onclick=
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);
​