用正则表达式拆分html字符串

时间:2010-12-29 14:33:58

标签: javascript

可以像这样用正则表达式分割html字符串

var mystring="<p style='display:inline'>hello world</p>!!';

并获得像这样的数组?

[<p style='display:inline'>,hello world,</p>,!!]

更新:我使用以下正则表达式

mystring.split(/(<\/?\w+(?:(?:\s+\w+(?:\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>)/gim);

谢谢

1 个答案:

答案 0 :(得分:0)

我毫不犹豫地发布这个答案,因为我认为这是一个坏主意。这不是最持久的解决方案,使用正则表达式解析html并不是一个好主意。你应该使用DOM。这是:

mystring.replace(/>/g,'>\x1d').split(/(?=<)|\x1d/)

基本上,将所有>替换为>{group separator},然后在<上进行前瞻分割并在{group separator}上进行分割。你得到你想要的东西,但是如果你有&lt;或者&gt;或者你的html里面的组分隔符未转义。