[。]仅匹配句点

时间:2013-05-06 11:29:31

标签: javascript regex

这是在JavaScript中测试的。

我正在通过正则表达式查找电子邮件,并将其作为表达式的一部分:

[-+.']

我虽然.应该更改为\.,但是当我测试[.]时,它只匹配句点,就像\.一样。在abc.abc@abc.com中,仅匹配期间。

为什么?它不应该匹配除换行符之外的任何字符吗?

而且,有人可以解释在我们参加活动时,与( )分组的方式与[ ]的分组方式有何关联吗? 我有点困惑。谢谢!

3 个答案:

答案 0 :(得分:4)

.只匹配文字句点,因为你在一个类中使用它。

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

[-+.']将匹配-+.'

另一方面,(...)定义了一个捕获组,这意味着它内部的匹配将被分组并“保存”以供以后使用。

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

答案 1 :(得分:3)

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

[] 用作字符类或字符集。

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

在这里你会找到很好的教程

http://www.regular-expressions.info/

  

[ - +。'] - 匹配1个字符 - 或+或。或者'你可以使用例如

     

[ - +。'] {2} 以匹配此群组中的2个字符或

     

[ - +。'] * 匹配0个或多个字符或

     

[ - +。'] + 匹配1个或多个字符

[] 中的

[] 中的点不同。

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

答案 2 :(得分:3)

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

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