我正在处理自定义的CMS,并希望能够选择一段HTML显示在textarea中进行编辑,并用另一个标签替换任何封闭标签。例如,我可能希望选择一个段落元素并将其变成一个h3,只需点击一下,就可以保持其他任何标签不变。删除从textarea中选择封闭的html标签
我已经实现rangyinputs允许在文字区域getSelection /使用replaceSelectedText操作,到目前为止,我有这样的:
function add_html_tag(target_ID, replace_tag) {
$(target_ID).focus();
$(target_ID).replaceSelectedText('<' + replace_tag + '>' + $(target_ID).getSelection().text.replace(/(<([^>]+)>)/ig,"") + '</' + replace_tag + '>');
}
这工作正常,但它从目标文本中删除所有标签,不只是封闭的人如此所选文本中的任何其他标签也将被删除。
任何想法,我认为它只会涉及更改替换语句中的正则表达式。由于textarea只包含纯文本,所以我不能使用jQuery方法,比如unwrap。很明显,在HTML上做这样的正则表达式操作是容易出错的,但现在我会假定用户正确选择文本!
您应该不使用正则表达式来解析HTML。看到这篇文章[这里](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags?rq=1)。 – Walls 2013-04-29 20:44:25