一个复杂的正则表达式求解

有一个正则表达式求解,如下:
/^<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/

这是一个解析html标签的表达式,能解析出如:

这样的起始标签,但经测试发现一个bug:
解析属性包含减号(即"-")的标签时出错,如:
本人的正则实在不熟,因此求解如何修改

var reg =/^<([\s\w-]+)((?:\s+[\s\w-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/;

我本地貌似 OK!

\s+\w+
是不是写成 [\s\w]+ 就好些了??

用jsoup吧
[url]http://www.oschina.net/project/tag/236/html-parser[/url]

\w全部替换为[\w-]{1}或[\w-]{1}

[\s\w-]