Javascript [.]只匹配句点

Javascript [.]只匹配句点,javascript,regex,Javascript,Regex,这是用JavaScript测试的 我正在查看一封电子邮件的正则表达式,发现这是表达式的一部分: [-+.] 我认为应该改为\.,但是当我测试[.]时,它只匹配句点,就像\.会匹配句点一样。在美国广播公司。abc@abc.com只有周期是匹配的 为什么?除了换行符,它不应该匹配任何字符吗 还有,有人能解释一下,当我们使用()分组时,与使用[]分组时,它们是如何工作的吗? 我有点糊涂了。谢谢 ()是正则表达式的子模式 []用作字符类或字符集 您可以告诉正则表达式引擎只匹配几个字符中的一个。只需将要匹

这是用JavaScript测试的

我正在查看一封电子邮件的正则表达式,发现这是表达式的一部分:

[-+.]

我认为
应该改为
\.
,但是当我测试
[.]
时,它只匹配句点,就像
\.
会匹配句点一样。在美国广播公司。abc@abc.com只有周期是匹配的

为什么?除了换行符,它不应该匹配任何字符吗

还有,有人能解释一下,当我们使用
()
分组时,与使用
[]
分组时,它们是如何工作的吗? 我有点糊涂了。谢谢

()是正则表达式的子模式

[]用作字符类或字符集

您可以告诉正则表达式引擎只匹配几个字符中的一个。只需将要匹配的字符放在方括号中即可。如果要匹配ae,请使用[ae]。您可以在gr[ae]y中使用此选项来匹配灰色或灰色

在这里你会发现很好的教程

[-+.]-匹配1个字符-或+或。或者“你可以使用

[-+.]{2}以匹配此组中的2个字符,或

[-+.]*匹配0个或多个字符,或

[-+.]+匹配一个或多个字符

[]中的点与[]中的点具有不同的含义


点匹配单个字符,而不关心该字符是什么。唯一的例外是换行符。在[]中,点表示点;)

只匹配文本句点,因为您在类中使用它

[…]
不是一个组,它是一个字符类,它将匹配该类中的任何字符一次,您可以将其视为
,这意味着:

[-+.]
将匹配
-
+
'

另一方面,
(…)
定义了一个捕获组,这意味着其中的匹配项将被分组并“保存”以供以后使用


如果您只想对匹配项进行分组,而不想在以后使用它,则可以使用非捕获组,语法为:
(?…)

方括号表达式不是“分组”,它是一个字符类,匹配括号内列出的集合中的任何单个字符。在方括号内,大多数元字符被视为文字,因此
[.*]
将匹配一个点或星型字符


括号(
()
)用于分组和捕获<代码>(.*)将匹配零个或多个字符的任何序列,并将匹配的字符串存储在缓冲区中以供将来参考,通常在匹配模式的后面作为反向参考(例如
(a*)b\1
匹配零个或多个
a
字符,然后是a b,然后再次匹配相同数量的a)或替换字符串中的引用。具体的语法取决于您使用的编程语言。

您试图应用regex的编程语言是什么?请一次只问一件事。对于两个独立的问题,创建两个独立的SO问题。否则,为两个问题选择最佳答案可能是不可能的,除非它们恰好出现在同一个SO答案中。在
[]
字符类中,
是一个文字,而不是元字符。@AlexStamper这是用JavaScript测试的。投票通过后,我已经在顶部看到了我想要的内容,谢谢!投票结果出来了,我已经在上面看到了我想要的东西,谢谢!