电子邮件的正则表达式:密码(PHP)

时间:2013-02-05 21:20:32

标签: php regex email passwords

我对正则表达式并不太熟悉,但我只是觉得我在阅读和理解它们时比在自己写作时要好得多。无法使其发挥作用。

电子邮件:密码

基本上,它需要验证任何长度的电子邮件地址和密码,用冒号分隔,周围有或没有空格。

密码可以包含绝对任何字符,包括冒号。电子邮件不能包括冒号,但据我所知,他们实际上无法做到。

真:

  • Em@il.com:密码
  • Em@il.com:p @ 55w:rd
  • Em@il.co.uk:p @ $ worD
  • Em@il.com:password

题:

  • Nomail.com:password
  • Nom @ ailcom:密码
  • Nomail:密码
  • E:m@il.com:密码

谢谢!


非常感谢F.J!在他的帮助以及我经常使用的Markus Sipilä的电子邮件验证中,这就是它的成果:

^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})[ ]?:.*$

当然,在任何电子邮件验证字符串的末尾添加F.J的代码([]?:。*)时,请记住,您可能必须摆脱行尾的存档。添加“可选”部分,意味着它可以留空(^ $)或(|)跟随字符串,使:

(^$|^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})[ ]?:.*$)

2 个答案:

答案 0 :(得分:2)

选择a good regex to match an email,然后将[ ]?:.*添加到其末尾(方括号不是必需的,但可以更容易看到那里有一个空格)。

答案 1 :(得分:0)

如果您认为电子邮件地址不能包含冒号,那么它就像:

一样简单
$string = 'Em@il.com:p@55w:rd';

$colon = strpos($string, ':');
$email = substr($string, 0, $colon);
$passw = substr($string, $colon + 1);

if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die('Invalid email address');
}
if (strlen($passw) < 8) { // For example
    die('Invalid password');
}

使用正则表达式验证电子邮件地址几乎是不可能的。用于验证电子邮件地址的最先进的正则表达式可以在大多数情况下完成工作,但它们是生物无法维持甚至无法理解的怪物。