正则表达式 - 验证Gmail地址

时间:2013-04-24 19:54:01

标签: regex

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

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

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

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

Gmail地址:

  1. 第一个和最后一个字符必须是[a-z0-9]
  2. 仅限用户名内容[a-z0-9。]
  3. 不能有连续的句号(即:e..o@gmail.com [这是错的])
  4. 用户名的长度必须在6到30个字母之间。
  5. 说实话,我对正则表达式没有多少经验。

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

10 个答案:

答案 0 :(得分:20)

您没有告诉您使用哪种正则表达式。

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

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

答案 1 :(得分:9)

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

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

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

您可以在regexpal中进行测试。

  

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

Google is your friend :)

答案 2 :(得分:2)

/([a-zA-Z0-9]+)([\_\.\-{1}])?([a-zA-Z0-9]+)\@([a-zA-Z0-9]+)([\.])([a-zA-Z\.]+)/g

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

  1. ([a-zA-Z0-9] +) - 匹配第一个可以有a-z,A-Z和0-9
  2. 的单词
  3. ([_.- {1}]) - 将匹配_, - ,.在第一个字之后
  4. - 将匹配前一个令牌的0(false)和1(true)。
  5. ([a-zA-Z0-9] +) - 匹配第二个字,可以有a-z,A-Z和0-9
  6. \ @ - 将匹配特殊字符@
  7. ([a-zA-Z0-9] +) - 将匹配@
  8. 之后的域名这个词
  9. ([。]) - 将匹配。
  10. ([a-zA-Z。] +) - 将匹配电子邮件ID的最后一个单词,可以是com,co.in,org等。
  11. 但是gmail不允许使用其他特殊字符,因此对于gmail电子邮件地址,正则表达式将比这更容易,如下所示:

    /([a-zA-Z0-9]+)([\.{1}])?([a-zA-Z0-9]+)\@gmail([\.])com/g
    
    1. ([a-zA-Z0-9] +) - 匹配第一个可以有a-z,A-Z和0-9
    2. 的单词
    3. ([。{1}]) - 将匹配。在第一个字之后
    4. - 将匹配前一个令牌的0(false)和1(true)。
    5. ([a-zA-Z0-9] +) - 匹配第二个字,可以有a-z,A-Z和0-9
    6. \ @ - 将匹配特殊字符@
    7. gmail - 将匹配@@ / li>之后的域名gmail
    8. ([。]) - 将匹配。
    9. com - 将匹配电子邮件ID的最后一个单词,即com

答案 3 :(得分:1)

正则表达式有很多文档,但您必须确保获得一个与您的环境具有的正则表达式相匹配的文档。是的,有很多方言。据我所知,“掌握正则表达式”仍然是最终的参考。

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

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

警告:我没有检查你给出的规则是否正确。一般来说,电子邮件地址肯定不会遵循它们。

答案 4 :(得分:1)

RFC 2822指定了有效电子邮件地址的内容,并对此进行了讨论here。但正如该页面所指出的那样,如果没有真正阅读并理解它正在做什么,你就不能接受它。

你在这里有优势,因为你希望地址始终以@gmail.com结尾,这会缩小你的正则表达式的范围(你可以拆分@并且只验证第一个一半)。

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

网上有很多关于正则表达式的文档,但是你应该确保阅读你正在使用的库/引擎如何处理事情。实现之间略有不同。

答案 5 :(得分:1)

我的解决方案是dragAndDrop

答案 6 :(得分: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
蟒蛇

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'>

答案 7 :(得分:0)

回答你的另一个问题:

这是指向正则表达式文档的链接:http://www.regular-expressions.info/ 只需googleing&#34; mylanguage regex&#34;

就可以为您使用的特定语言提供更多帮助

答案 8 :(得分:-1)

也许你可以在这里尝试一下 验证Gmail或Google地址 http://regxer.com/post.php?post_id=20

答案 9 :(得分:-3)

final CollectionReference managitUserBuildings = Firestore.instance
      .collection('managit_user_buildings')
      .document(uid)
      .collection('UserBuildings');