什么是用于在<span>标签中查找属性的Javascript Regexp?</span>

时间:2011-04-19 14:09:31

标签: javascript regex html-sanitizing

我正在尝试使用<div contenteditable="true>来获取用户的文字。我会使用一个简单的<textarea>,但我需要换行符,最终需要列表和表等。我正在尝试构建一个半文本编辑器,但不是一个完整的编辑器。我不想使用富文本编辑器。

我正在尝试从<span>中键入的文本中删除<div contenteditable="true>标记上的属性。有没有办法用Regexp做到这一点?我在提出Regexp方面遇到了困难,因为我无法弄清楚如何制作它以使字符串以<span开头并以>结尾,并且任意数量的字符可以介于两者之间。有没有办法将其组合在一个Regexp中?我提出了/^<span >$/,但这不起作用,因为两个字符串之间没有划分。这样的事情会起作用吗/^[<span][>]$/g

4 个答案:

答案 0 :(得分:1)

解析HTML ,然后删除属性。如果您是在浏览器中执行此操作,则可以使用高级HTML解析器(或您拥有IE),因此请使用它!

答案 1 :(得分:1)

使用DOM函数。下面是一些使用jQuery的代码,使其更容易阅读:

$('#your-div span').each(function() {
    var elem = this, $elem = $(this);
    $.each(elem.attributes, function(i, attr) {
        if(attr) {
            $elem.removeAttr(attr.name);
        }
    });
});

演示:http://jsfiddle.net/ThiefMaster/qfsAb/

但是,在您的情况下,您可能不仅要从跨度中删除属性,还要从所有元素中删除属性,除非该属性是例如alignhref

所以,这里有一些JS:http://jsfiddle.net/ThiefMaster/qfsAb/1/

$('#your-div').children().each(function() {
    var elem = this, $elem = $(this);
    $.each(elem.attributes, function(i, attr) {
        if(attr && attr.name != 'href' && attr.name != 'align') {
            $elem.removeAttr(attr.name);
        }
    });
});

答案 2 :(得分:1)

我在http://jsfiddle.net/b3DSQ/

做了一个工作演示
$('#editor span').each(function(i, el) {
    var attrs = el.attributes;
    $.each(attrs, function(i, a) {
        $(el).removeAttr(a.name);
    });
});

[我更改了一个早先的版本,它将内容复制到内存中,编辑后再替换 - 没有意识到输入div的内容在DOM中自动生效]。

答案 3 :(得分:0)

试试这个:

your_string.replace(/<span[^>]*>/g, '<span>');

如果用户写了类似<span title="Go > there">

的内容,则会中断
相关问题