在JavaScript的正则表达式中,字符集[^]是什么意思?

在JavaScript的正则表达式中,字符集[^]是什么意思?,javascript,regex,Javascript,Regex,资料来源: 在解释如何使用点字符(.)时,文档中说: 因此,为了跨多行匹配模式,可以使用字符集[^],它将匹配包括换行符在内的任何字符(当然,如果您不是指旧版本的IE) 关于^字符,它说: 匹配输入的开头。如果多行标志设置为true,则也会在换行符后立即匹配 显然,^是用来标记哪一个字符从一行开始,而不是代表任何类型的字符。所以问题是:[^]如何匹配任何字符,包括换行符?像这样的块[]意味着这些括号之间的任何符号 例如,[abc]匹配a、b或c 但是,如果此块的第一个字符是^,则表示不在括号之间

资料来源:

在解释如何使用点字符(.)时,文档中说:

因此,为了跨多行匹配模式,可以使用字符集[^],它将匹配包括换行符在内的任何字符(当然,如果您不是指旧版本的IE)

关于^字符,它说:

匹配输入的开头。如果多行标志设置为true,则也会在换行符后立即匹配


显然,^是用来标记哪一个字符从一行开始,而不是代表任何类型的字符。所以问题是:[^]如何匹配任何字符,包括换行符?

像这样的块
[]
意味着这些括号之间的任何符号

例如,
[abc]
匹配
a
b
c

但是,如果此块的第一个字符是
^
,则表示不在括号之间的任何符号:

例如,
[^abc]
匹配
d
e
\n
(新行)、
(空格)等

因此,
[^]
表示不在空集中的任何内容,或者是相同的内容,即整个字符集(包括
\n
字符)


“常规”点(
)与任何东西都匹配,除了新行(
\n
)。因此,这相当于
[^\n]
。我说“常规”是因为你可以指定一个选项使点匹配任何东西。因此,它相当于
[^]

这样的块
[]
表示括号之间的任何符号

例如,
[abc]
匹配
a
b
c

但是,如果此块的第一个字符是
^
,则表示不在括号之间的任何符号:

例如,
[^abc]
匹配
d
e
\n
(新行)、
(空格)等

因此,
[^]
表示不在空集中的任何内容,或者是相同的内容,即整个字符集(包括
\n
字符)


“常规”点(
)与任何东西都匹配,除了新行(
\n
)。因此,这相当于
[^\n]
。我说“常规”是因为你可以指定一个选项使点匹配任何东西。因此,它相当于
[^]

[]
用于表示与括号中标记匹配的任何内容的匹配。如果第一个字符是
^
,即
[^]
,则表示括号中与标记不匹配的任何内容。因此,如果没有代币,它会匹配所有的东西(字面上说,没有不匹配的东西)。因为你错过了[],这就造成了差异。[abc]表示匹配字符a、b或c,而[]表示匹配空值。现在[^abc]匹配非a、b或c的任何字符,而[^]表示匹配非空,表示任何内容。这是我自己的记忆方式,但实际上这只是[^]的定义:
匹配任何字符,包括换行符
“显然^用于标记哪一个字符开始一行”不完全是:它表示一行的第一个字符之前的标记,但它根本不标记任何字符,它只标记该字符前面的位置。正如您在其他地方得到的回答,方括号内的
^
字符表示完全不同的内容。
[]
用于表示与括号内标记匹配的任何内容的匹配。如果第一个字符是
^
,即
[^]
,则表示括号中与标记不匹配的任何内容。因此,如果没有代币,它会匹配所有的东西(字面上说,没有不匹配的东西)。因为你错过了[],这就造成了差异。[abc]表示匹配字符a、b或c,而[]表示匹配空值。现在[^abc]匹配非a、b或c的任何字符,而[^]表示匹配非空,表示任何内容。这是我自己的记忆方式,但实际上这只是[^]的定义:
匹配任何字符,包括换行符
“显然^用于标记哪一个字符开始一行”不完全是:它表示一行的第一个字符之前的标记,但它根本不标记任何字符,它只标记该字符前面的位置。正如您在其他地方得到的回答,方括号内的
^
字符表示完全不同的含义。