17

我正在尝试创建一个表达式来验证 Gmail 地址。这就是我到目前为止所做的。

^([\w]*[\w\.]*(?!\.)@gmail.com)

我正在尝试创建一个表达式来验证 Gmail 地址。这就是我到目前为止所做的。

但它没有按我的意愿工作。

邮箱地址:

  1. 第一个和最后一个字符必须是 [a-z0-9]
  2. 用户名内容仅 [a-z0-9.]
  3. 不能有连续的句点(即:e..o@gmail.com[这是错误的])
  4. 用户名的长度必须在 6 到 30 个字母之间。

老实说,我对正则表达式没有太多经验。

顺便说一句,是否有正则表达式的文档?

4

9 回答 9

28

您没有告诉您使用哪个正则表达式实现。

^[a-z0-9](\.?[a-z0-9]){5,}@g(oogle)?mail\.com$
  • [a-z0-9]第一个字符
  • (\.?[a-z0-9]){5,}至少五个以下字母数字字符,可能前面有一个点(请参阅@Daniel 的评论,复制自 @Christopher 的答案)
  • g(oogle)?mailgmail 或 googlemail(参见@alroc 的回答)

可能您也想使用不区分大小写的模式匹配。(/.../i在 JavaScript 中。)

于 2013-04-24T20:00:43.583 回答
11

用于匹配 Gmail 的简单正则表达式:

^[\w.+\-]+@gmail\.com$

匹配,如果在字符串的开头有\w(字母数字或下划线字符) or .or +or -,一次或多次,然后@gmail.com在字符串的末尾。

您可以在regexpal中对其进行测试。

顺便说一句,是否有正则表达式的文档?

谷歌是你的朋友 :)

于 2013-04-24T19:57:15.420 回答
5
/([a-zA-Z0-9]+)([\_\.\-{1}])?([a-zA-Z0-9]+)\@([a-zA-Z0-9]+)([\.])([a-zA-Z\.]+)/g

这是用于验证所有电子邮件地址的电子邮件地址的正则表达式。

  1. ([a-zA-Z0-9]+) - 将匹配第一个可以包含 az、AZ 和 0-9 的单词
  2. ([_.-{1}]) - 将匹配 _, -, . 在第一个词之后
  3. ? - 将匹配前一个标记的 0(false) 和 1(true)。
  4. ([a-zA-Z0-9]+) - 将匹配可以包含 az、AZ 和 0-9 的第二个单词
  5. \@ - 将匹配特殊字符@
  6. ([a-zA-Z0-9]+) - 匹配@之后的域名
  7. ([.]) - 将匹配 .
  8. ([a-zA-Z.]+) - 将匹配电子邮件 ID 的最后一个单词,可以是 com、co.in、org 等。

但是 gmail 不允许使用其他特殊字符,因此对于 gmail 电子邮件地址,正则表达式将比这更容易,如下所示:

/([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9]+)\@gmail([\.])com/g
  1. ([a-zA-Z0-9]+) - 将匹配第一个可以包含 az、AZ 和 0-9 的单词
  2. ([.{1}]) - 将匹配 . 在第一个词之后
  3. ? - 将匹配前一个标记的 0(false) 和 1(true)。
  4. ([a-zA-Z0-9]+) - 将匹配可以包含 az、AZ 和 0-9 的第二个单词
  5. \@ - 将匹配特殊字符@
  6. gmail - 将匹配@之后的域名 gmail 一词
  7. ([.]) - 将匹配 .
  8. com - 将匹配电子邮件 ID 的最后一个单词,即 com
于 2016-09-13T06:43:18.647 回答
2

有很多关于正则表达式的文档,但是您必须确保获得一个与您的环境具有的特定正则表达式风格相匹配的文档。是的,有很多方言。话虽如此,据我所知,“掌握正则表达式”仍然是终极参考。

至于你的具体问题,我可能会使用

^[a-z0-9](\.?[a-z0-9]){5,}@gmail\.com$

警告:我没有检查您给出的规则是否正确。电子邮件地址通常不会跟随它们。

于 2013-04-24T20:02:00.187 回答
1

RFC 2822 指定了有效电子邮件地址的构成,这在此处进行了讨论。但是正如该页面所指出的,您不能在没有真正阅读并理解它在做什么的情况下就接受它。

您在这里处于优势,因为您希望地址始终以 结尾@gmail.com,这会缩小您的正则表达式的范围(您可以拆分@并仅验证前半部分)。

顺便说一句,GMail 并不是全世界的 gmail.com——在英国和德国,你也会发现googlemail.com

网络上有很多关于正则表达式的文档,但是您应该确保阅读您正在使用的库/引擎如何处理事情。实现之间存在细微差异。

于 2013-04-24T20:04:00.470 回答
1

您可以使用此常规表达的任何邮件

([a-zA-Z0-9_.-]+)@([a-zA-Z]+)([\.])([a-zA-Z]+)

1)([a-zA-Z0-9_.-]+) - check a-z, A-Z, and 0-9, _, ., -
2)([a-zA-Z]+)    - check a-z, A-Z, and 0-9
3) @             - will match special character @
4)([\.])         - dot(.) in regular expression have any character so if search dot(.) character then use [\.]
5) same step 2
Python

import re pattern = r'([a-zA-Z0-9_.-]+)@([a-zA-Z]+)([\.])([a-zA-Z]+)' re.match(pattern, 'any@any.any')

输出:
<re.Match object; span=(0, 11), match='any@any.com'>

于 2020-03-21T10:00:32.040 回答
0

在回答你的另一个问题时:

这是正则表达式文档的链接: http ://www.regular-expressions.info/ 只需在谷歌上搜索“mylanguage regex”即可获得更多关于您使用的特定语言的帮助

于 2013-04-24T19:58:30.623 回答
0

我的解决方案是^[a-zA-Z][-_.a-zA-Z0-9]{5,29}@g(oogle)?mail.com$

于 2018-02-17T11:34:34.600 回答
-3
([a-zA-Z0-9\.]{5,15})\@gmail[\.]com
于 2020-01-05T08:51:55.347 回答