正则表达式以更正电子邮件地址

时间:2013-11-06 16:45:43

标签: regex preg-replace

我需要帮助编写一个正则表达式,我想在电子邮件地址的开头和结尾删除不需要的字符。例如:

z>user1@hotmail.com<kt
z>user2@hotmail.pk<kt
z>puser3@yahoo.com<kt
z>npuser4@yaoo.uk<kt

应用正则表达式后,我的电子邮件应如下所示:

user1@hotmail.com
user2@hotmail.pk
puser3@yahoo.com
npuser4@yaoo.uk

如果电子邮件地址已经正确,则不应用正则表达式。

4 个答案:

答案 0 :(得分:3)

您可以尝试删除

的匹配项
^[^>]*>|<[^>]*$

demo


Regular expression visualization

Debuggex Demo

答案 1 :(得分:0)

查找^[^>]*>([^<]*)<*.*$并将其替换为\1

这是example on regex101

答案 2 :(得分:0)

尝试在您不想要的角色之间的任何内容上使用捕获组。例如,

/>([\w|\d]+@[\w\d]+.\w+)</

基本上,regexp inside()匹配的任何部分都保存在捕获组中。这个匹配任何内部&gt; here&lt;以一堆字符或数字开头,有一个@,有一个或多个字或数字字符,然后是句点,然后是一些单词字符。应该匹配任何有效的电子邮件地址。

如果您需要除&gt;之外的字符&lt;要匹配,请创建字符类。这就是那些方形括号位。如果你替换&gt;使用[.,></?;:'"],它会匹配任何这些字符。

Demo(查看匹配组)

答案 3 :(得分:0)

我认为你可能会略微忽略正则表达式的观点。正则表达式定义字符串的“形状”,并返回字符串是否符合该形状。电子邮件地址的简单表达式可能类似于: [A-Z] [A-Z] [0-9] *。?[A-Z] [A-Z] [0-9] + @ [A-Z] [A-Z] [0-9] * [A-Z] +

但是为电子邮件地址编写一个catch-all正则表达式并不简单。真的,你需要做的就是正确检查:

  1. 确保只有一个'@' - 符号。

  2. 检查at符号前面的部分是否符合此部分的正则表达式:

    • 字符
    • 数字
    • 扩展字符:.-'_(该列表可能不完整)
  3. 检查@ -sign后面的部分是否符合域名注册表:
    • 字符
    • 数字
    • 扩展字符:。 -
    • 必须以字符或数字开头,并且必须以正确的域名结尾。