这是在 JavaScript 中测试的。
我正在查看电子邮件的正则表达式,发现这是表达式的一部分:
[-+.']
我虽然.
应该将其更改为\.
,但是当我测试[.]
它时,它只匹配句点,就像\.
会一样。在 abc.abc@abc.com 中,仅匹配句点。
怎么来的?它不应该匹配除换行符之外的任何字符吗?
而且,有人能解释一下分组与( )
我们[ ]
在分组时如何工作吗?我有点困惑。谢谢!
这是在 JavaScript 中测试的。
我正在查看电子邮件的正则表达式,发现这是表达式的一部分:
[-+.']
我虽然.
应该将其更改为\.
,但是当我测试[.]
它时,它只匹配句点,就像\.
会一样。在 abc.abc@abc.com 中,仅匹配句点。
怎么来的?它不应该匹配除换行符之外的任何字符吗?
而且,有人能解释一下分组与( )
我们[ ]
在分组时如何工作吗?我有点困惑。谢谢!
.
仅匹配文字句点,因为您在类中使用它。
[...]
不是一个组,它是一个字符类,它会匹配该类中的任何字符一次,您可以将其视为一个or
,这意味着:
[-+.']
将匹配-
或+
或.
或'
另一方面(...)
定义了一个捕获组,这意味着其中的匹配将被分组并“保存”以供以后使用。
如果只想对匹配进行分组,以后不使用,可以使用非捕获组,语法如下:(? ... )
方括号表达式不是“分组”,它是一个字符类,它匹配括号内列出的集合中的任何单个字符。在方括号内,大多数元字符都被视为文字,因此[.*]
将匹配单个字符,即点或星。
括号 ( ()
) 用于分组和捕获。 (.*)
将匹配零个或多个字符的任何序列,并将匹配的字符串存储在缓冲区中以供将来参考,通常作为匹配模式稍后的反向引用(例如(a*)b\1
匹配零个或多个a
字符,然后是 ab,然后是相同数量的 a再次)或替换字符串中的引用。确切的语法取决于您使用的编程语言。
()是正则表达式的子模式。
[]用作字符类或字符集。
您可以告诉正则表达式引擎只匹配几个字符中的一个。只需将要匹配的字符放在方括号之间。如果要匹配a或e,请使用[ae]。您可以在gr[ae]y中使用它来匹配灰色或灰色。
在这里你会找到很好的教程
http://www.regular-expressions.info/
[-+.'] - 匹配 1 个字符 - 或 + 或 . 或 ' 例如,您可以使用
[-+.']{2}匹配该组中的 2 个字符或
[-+.']*匹配 0 个或多个字符或
[-+.']+匹配 1 个或多个字符
[] 中的点与[]中的点具有不同的含义。
点匹配单个字符,而不关心该字符是什么。唯一的例外是换行符。在[]中,点表示点;)