有人能解释一下下面的javascript代码吗?

有人能解释一下下面的javascript代码吗?,javascript,regex,Javascript,Regex,有人能解释一下下面的示例代码吗? 这是最后一个例子 不确定为什么在'\'之前没有'\'。,它可以通过添加'\'得到相同的结果 JavaScript: var url = "http://xxx.domain.com"; print(/[^.]+/.exec(url)[0].substr(7)); // prints "xxx" 获取第一个句点之前的字符,然后删除前7个字符,即http://以便留下域的第一部分,在本例中为xxx [^.]+表示一个或多个非句点的字符,因此此字符与http://x

有人能解释一下下面的示例代码吗? 这是最后一个例子

不确定为什么在
'\'
之前没有
'\'
。,它可以通过添加
'\'
得到相同的结果

JavaScript:

var url = "http://xxx.domain.com";
print(/[^.]+/.exec(url)[0].substr(7)); // prints "xxx"

获取第一个句点之前的字符,然后删除前7个字符,即http://以便留下域的第一部分,在本例中为
xxx

[^.]+
表示一个或多个非句点的字符,因此此字符与
http://xxx
。不需要在括号内转义句号,因为在括号内句号没有特殊含义,因此可以将其视为普通字符

[0]
表示整个匹配,即
http://xxx

.substr(7)
表示获取前7个字符之后的字符,即
xxx

请注意有关字符类中的元字符的段落

请注意,字符类中唯一的特殊字符或元字符是右括号(])、反斜杠(\)、插入符号(^)和连字符(-)。通常的元字符是字符类中的普通字符,不需要反斜杠转义


字符类[^something]表示除某个以外的任何内容,在本例中,某个内容是句号,而不是正则表达式特殊字符(+1),但
[0]
不表示第一个匹配,而是表示整个匹配<代码>[1]并不意味着第二个匹配,它意味着第二个捕获组。@FakeRainBrigand+1尽管有一个小的修复。。。
exec()
[1]
)中的第二个数组元素将是第一个捕获组,而不是第二个。修复了关于
[0]
的注释。我关心的是为什么使用
[^.]
而不是
[^\.]
,因为
应该是RegExp中的特殊字符,这是
[^]
的特殊情况?或者有人能给我一些关于它的官方文件链接吗?@VincentHou-A
[^.]
中不是特殊字符,因此不需要在括号中转义。如果这确实是您的原始问题,那么您应该在原始问题中指定。另外一个注意事项是,连字符不需要在组的开头或结尾转义,并且在没有意义的情况下,例如在字符类中的
x-y
之后。插入符号只需要在组开始时转义。例如,
[0-3-9]
将匹配0、1、2、3、9或连字符,
[a^]
将匹配a或插入符号。