如何从word中替换粘贴到htmleditor中的这些标记

时间:2014-03-01 01:48:02

标签: jquery html regex ms-word

我将一些内容从word粘贴到htmleditor()【http://mindmup.github.io/bootstrap-wysiwyg/】,但是一些单词定义的标签仍然在html中,如“< v:shape>< / v:shape>”和“< v:shapetype>< / v:shapetype>”和“< v:imagedata>< / v:imagedata>”等等...

除了这种标签之外,我已经用jquery删除了大部分无用的标签。

以下所有内容都不起作用,例如$(xxxxxx).find('v')/.find('v:shape')/.find('shape');。但$(xxxxxx).find('a')/.find('span')效果很好。

我想使用正则表达式将所有< v:xxx>< /v:xxx>标签替换为< vword>< /vword>然后删除所有vword标签,但我不知道正则表达式语法,在这两天我没有时间学习它和我想知道这是否正确。

那么,谁能告诉我应该怎么做以及应该做什么? THX。

这很有效:

container.find("font").each(function () {
$(this).replaceWith(function () { return $(this).contents(); });
});

这不起作用:

container.find("v").each(function () {
$(this).remove();
});
container.find("shape").each(function () {
$(this).remove();
});
container.find("shapetype").each(function () {
$(this).remove();
});
container.find("v:shape").each(function () {
$(this).remove();
});
container.find("v:shapetype").each(function () {
$(this).remove();
});

2 个答案:

答案 0 :(得分:0)

每个“&lt;”之后是否应该有空格?假设这是一个错字,这应该适合你:

匹配:<v:(\w+)>(.*?)</v:\1>

替换:<v\1>\2</v\1>

答案 1 :(得分:0)

我用其他方法来解决问题:

首先,

    container.find('*').each(function () {
        if ($(this).get(0).tagName == 'V:SHAPE') {
            $(this).remove();
        }
    });

其次, 我发现了另一篇关于此类标记的帖子:http://forum.jquery.com/topic/jquery-colon-in-xml-tag-on-webkit-cannot-select 但它对我不起作用。 我通过谷歌搜索'jquery select tagname with colon',得到了这个:Parsing XML with namespaces using jQuery $().find 然后我改变了我的解决方案:

container.find('v\\:shape').each(function () {
    $(this).remove();
});