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