嗯..我想在jQuery核心内对正则表达式匹配器进行一些小改动,以实现我的目标: 允许在名称中使用短划线匹配标签
示例:<auto-link/>
,<user-circle/>
,<something-else></something-else>
今天,jQuery标记匹配器/正则表达式被声明为rsingleTag
变量,你可以在他们的源代码上see here,但它与我需要的不匹配。所以我想出了我修改后的变化:
/^<(\w+)\s*\/?>(?:<\/\1>|)$/
/^<(\w(\w|-\w)*\s*\/?)>(?:<\/\1>|)$/
因此,我所做的更改完全匹配,但是当我尝试使用rsingleTag.exec("<auto-link/>")
从中提取字符串时,预期结果与jQuery默认正则表达式不同。
rsingleTag.exec("<div/>")
=&gt; ["<div/>", "div"]
rsingleTag.exec("<div/>")
=&gt; ["<div/>", "div/", "v"]
我希望修改后的正则表达式结果与默认的正则表达式结果相同,并允许带有破折号的标签。我做错了什么或者如何解决?
答案 0 :(得分:3)
/^<(\w(\w|-\w)*\s*\/?)>(?:<\/\1>|)$/ - your attempt
/^<(\w[-\w]*)\s*\/?>(?:<\/\1>|)$/ - your intention