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

时间:2012-12-10 17:44:49

标签: javascript

我正在尝试使用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>

1 个答案:

答案 0 :(得分: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);
​