Sizzle的CLASS Javascript正则表达式?

Roy*_*mir 6 javascript regex sizzle

我查看了Prototype.js代码,我在那里看到了(在Sizzle部分):

在此输入图像描述

我的问题是关于这一行:

CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,

\.是用于点,其次是(未捕获的组:即,范围和-)(OR \.).(实际上它说,\\.但第一个只是逃避所以它\.).

嗯?

什么\.

我做了测试/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/.test('.aa\.'),然后返回true.

但是什么.aa\.呢?显然这个类是.aa但如果\是一个有效的字符,为什么它不在该[..]部分?

我错过了什么?

Kob*_*obi 3

\\.匹配文字反斜杠,后跟任何字符(点不转义)。

来自http://Sizzlejs.com/

转义选择器支持 #id\:value

它用于匹配类似 的类a\~b,并且实际上在屏幕截图上的大多数选择器中都会重复。当名称或类中包含点或括号时,通常会出现这种情况。

至于你的测试:

  • 在 JavaScript 中,“无效”转义序列将被忽略"\." === ".",并且您的测试与 相同.test('.aa.')
  • .test允许部分匹配 - /\w+/.test("a!") === true- 这并不意味着最后一个点实际上已匹配。