这条jquery中正则表达式的意思。

// A simple way to check for HTML strings
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)

rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,

这是匹配html标签的,我不理解里面[^>]*,为什么要加这个呢,是为了解决什么问题。

/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/.test('<a>>').test('<a>>'); // true
阅读 1.9k
1 个回答

// A simple way to check for HTML strings
不是
// A simple way to check for HTML tag

  • 第一部分:(<[\w\W]+>) 用来匹配 HTML tag
  • 第二部分:[^>]* 用来匹配 HTML tag 后面的字符串

前面用了圆括号进行分组,所以,这个正则表达式可以把 tag 取出来。

只有第一部分和第二部分和在一起,才能完整匹配一行 HTML 代码。第二部分代表了 HTML 开始标签和结束标签中间的内容以及结束标签,当然第二部分可以没有。

例如:

<img src="" alt="">            // 只有第一部分,没有第二部分
<a href="">xxxx</a>            // 第一部分是: <a href="">,第二部分是:xxxx</a>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题