用正则表达式转义某些html元素中的引号?

时间:2010-12-13 12:50:45

标签: javascript regex

我倾向于使用image solution described by 24Ways来使用ajax和脚本。

但是,ajax结果不受我的控制,我需要一个regexp来转义引号('和“),因为脚本将包含在onload属性中。

到目前为止,这是我的工作:

clean_txt = clean_txt.replace(
    /<script[^>]*>([\n\s\S]+?)<\/script>/img, 
    "<img src='1px.gif?d=$1' alt='' onload='new Function(\"$1\")();' />"
);

有没有人有最终的正则表达式,例如逃避1美元的报价?

2 个答案:

答案 0 :(得分:0)

用正则表达式解析html会破坏你的灵魂。

我真的建议使用更简单的东西:

clean_txt.replace("'","\\'").replace('"', '\\"');

当然,这会将每个'替换为\',将"替换为\"。如果您不想这样做,请阅读有关XML parsing in Javascript的更多信息。

答案 1 :(得分:0)

事实证明它可以通过转义onload函数的包装引号来解决。

clean_txt = clean_txt.replace(/<script[^>]*>([\n\s\S]+?)<\/script>/img, 
            "<img src='1px.gif?d=$1' alt='' onload=\'$1\;\' />");

有点丑陋和奇怪,但我可以忍受。通过这样做,浏览器似乎自己解决了这个问题。

我在Opera 10.6,Firefox 3.6,Safari 5和Chrome 7中进行了测试。