电子邮件正则表达式的小修正

时间:2012-04-17 11:30:03

标签: regex

这是我的表达

(\w+\.)*\w+\s*(@|\({1}\s*at\s*\){1}|\s+at\s+){1}\s*(\S{2,3}\.)?(\w+)(\s*dot\s*|\s*\.*\s*)(com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|ru)\b

l @ ombe @ cs.name.edu 中提供 ombe@cs.name.edu ,这是错误的

我需要从可能的变种中排除 l @ ombe @ cs.name.edu

我已经开发了这个正则表达式来从各种混淆的字符串中提取电子邮件而不是验证,作为我的家庭作业的一部分。坚持 l @ ombe @ cs.name.edu 测试。

你能帮帮我吗?

Redefenition:

表达式:

(\w+)@(\w+)\.name\.edu

2个字符串:

  • 名@ NAME1 @ cs.name.edu
  • name2@cs.name.edu

结果是获得:

name1@cs.name.edu name2@cs.name.edu

根本不得包含1个部分。

2 个答案:

答案 0 :(得分:0)

您可以使用^和$将正则表达式锚定到字符串的开头和结尾。 这会强制匹配整个字符串,而不是仅匹配其中的一部分。

在你的情况下:

^(\w+\.)*\w+\s*(@|\({1}\s*at\s*\){1}|\s+at\s+){1}\s*(\S{2,3}\.)?(\w+)(\s*dot\s*|\s*\.*\s*)(com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum|ru)\b$

答案 1 :(得分:0)

<强> RFC 2822

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])