使用javascript正则表达式使引用文本变得漂亮

使用javascript正则表达式使引用文本变得漂亮,javascript,jquery,regex,Javascript,Jquery,Regex,我想将前缀为的文本行包装在中 这是我的密码: $(document).ready(function(){ x = $('DIV#test').html(); x = x.replace(/(^|\n)&gt;([^\n]+)(\n|$)/g, "$1<span class=\"quoted\">$2</span>$3"); $('DIV#test').html(x); }); $(文档).ready(函数(){ x=$('DIV#test

我想将前缀为
的文本行包装在

这是我的密码:

$(document).ready(function(){
    x = $('DIV#test').html();
    x = x.replace(/(^|\n)&gt;([^\n]+)(\n|$)/g, "$1<span class=\"quoted\">$2</span>$3");
    $('DIV#test').html(x);
});
$(文档).ready(函数(){
x=$('DIV#test').html();
x=x.replace(/(^\n)([^\n]+)(\n ^$)/g,“$1$2$3”);
$('DIV#test').html(x);
});
我找不到原因,但这只会在Chrome中引用奇数行,在IE中,它会使所有文本变为灰色。你知道这个代码有什么问题吗


jsFiddle上的演示:

它在IE中不起作用的原因是旧的IE处理innerHTML的方式不同,这反映在jQuery中有不同的.html()结果

试试这个JSFIDLE:


我在7、8和9兼容模式下运行了它,它似乎在工作。

它在IE中不工作的原因是旧的IE处理innerHTML的方式不同,这反映在jQuery中有不同的.html()结果

试试这个JSFIDLE:

我在7、8和9种兼容模式下运行了它,似乎正在工作。

在正则表达式上使用
m
(“多行”)标志,而不是在开始时进行替换(并对生成的捕获组进行必要的调整):

$(文档).ready(函数(){
x=$('DIV#test').html();
x=x.replace(/^([^\n]+)$/gm,“$1”);
//更改:^----此处--^^^--此处^^--此处-^
$('DIV#test').html(x);
});

m
标志告诉正则表达式将
^
$
视为相对于单个行,而不是相对于整个字符串。本规范第节和第节中的更多内容,以及。

在正则表达式上使用
m
(“多行”)标志,而不是在开始时进行替换(并对生成的捕获组进行必要的调整):

$(文档).ready(函数(){
x=$('DIV#test').html();
x=x.replace(/^([^\n]+)$/gm,“$1”);
//更改:^----此处--^^^--此处^^--此处-^
$('DIV#test').html(x);
});


m
标志告诉正则表达式将
^
$
视为相对于单个行,而不是相对于整个字符串。更多信息请参见规范的章节和。

是的,对不起,我想他会看到m标志,然后问自己这是什么,然后用谷歌搜索信息进行自我学习:)是的,对不起,我想他会看到m标志,然后问自己这是什么,然后用谷歌搜索信息进行自我学习:)尽管我没有解决方案。。我可以指出你的问题。。正则表达式似乎是这样工作的。。第一行从“\n>”扫描到“\n”,然后下一行再次查找“\n>”,但“\n”已在上一次扫描中使用。。虽然我没有解决办法,但希望这能帮上忙。。我可以指出你的问题。。正则表达式似乎是这样工作的。。第一行从“\n>”扫描到“\n”,然后下一行再次查找“\n>”,但“\n”已在上一次扫描中使用。。希望这有助于感谢你解释我错在哪里。这在除IE之外的所有浏览器中都能正常工作。在IE中,所有内容都封装在一个span中,换行符被忽略(它在JSFIDLE demo中工作,但当我从mySQL DB中获取文本时,它总是相同的)。有没有办法解决这个问题?@SilverLight、IE7和IE8对.html()给出了不同的结果,正如这里所解释的,谢谢你解释我错在哪里。这在除IE之外的所有浏览器中都能正常工作。在IE中,所有内容都封装在一个span中,换行符被忽略(它在JSFIDLE demo中工作,但当我从mySQL DB中获取文本时,它总是相同的)。有没有办法解决这个问题?@SilverLight、IE7和IE8对.html()给出了不同的结果,如下所述
$(document).ready(function(){
    x = $('DIV#test').html();
    x = x.replace(/^&gt;([^\n]+)$/gm, "<span class=\"quoted\">$1</span>");
    // Changes:    ^----here----^      ^--here                ^^--here-^
    $('DIV#test').html(x);
});