【问题标题】:Regular expression for e-mail:password (PHP) [closed]电子邮件的正则表达式:密码(PHP)[关闭]
【发布时间】:2013-01-20 22:43:52
【问题描述】:

我对正则表达式并不太熟悉,但我只是觉得我更擅长阅读和理解它们,而不是自己编写它们。无法让它工作。

电子邮件:密码

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

密码绝对可以包含任何字符,包括冒号。电子邮件不能包含冒号,但据我所知,它们确实不能包含冒号。

正确:

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

错误:

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

谢谢!


非常感谢 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,})[ ]?:.*$)

【问题讨论】:

  • 向我们展示您到目前为止所做的尝试。 不要描述它,而是编辑问题并粘贴到实际代码中。然后告诉我们什么不起作用。当你尝试它时发生了什么?你得到不正确的结果吗?您得到 no 结果了吗?如果结果不正确,是什么导致它们不正确?你期待什么?你得到任何正确的结果了吗?如果是这样,它们是什么?不要让我们猜测。
  • 我明白,但是我尝试了很多,以至于我以一点绝对的胡言乱语结束,并且从头开始显示所有不正确的尝试并没有多大帮助,我想,尤其是当遇到一个知道如何编写正则表达式。我需要的只是正确的正则表达式。到目前为止我所尝试的并没有让任何尝试通过(表单提交到 PHP)。
  • @Downvoter,我知道我没有展示研究成果(除了我在网站和互联网上搜索了地狱,发现以前没有人问过这个问题)。但是我在发布问题时确实遵循了所有规则和提示,并且我确信显示所有失败并不是其中的一部分。我很确定这个问题再清楚不过了,所以请详细说明。
  • 我知道您尝试了很多,但请给我们一些东西。我们不会为您编写代码,但我们会帮助您。
  • 我以后在这里问任何问题时都会记住这一点。如果我敢的话。这是我在这里提出的第一个也是唯一一个问题,我彻底遵循了所有指导方针,并查看了其他问题,看看我是否做得对。很抱歉,我不知道或没有看到有关此特定规则的任何迹象,并且为此被否决,我觉得作为一个新人有点沮丧和恐惧。我相信这篇文章很清楚,现在也很有帮助。再次感谢 F.J,感谢您的理解。

标签: php regex email passwords


【解决方案1】:

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

【讨论】:

  • 非常感谢!我想太多了。接受你的答案。我已将最终结果添加到顶部帖子/问题中。再次感谢!
【解决方案2】:

如果您假设电子邮件地址不能包含冒号,那么它很简单:

$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');
}

使用正则表达式验证电子邮件地址几乎是不可能的。大多数时候,用于验证电子邮件地址的最先进的正则表达式可能会完成这项工作,但它们是无法被生物维护甚至理解的怪物。

【讨论】:

  • 感谢您的澄清和尝试,但有时人们别无选择,需要对确切问题的答案,在我的情况下是正则表达式。就我而言,我只能在我需要的两个实例之一中使用您的代码。例如,一些留言板和其他系统只允许正则表达式来验证表单字段,然后像您这样的任何非正则表达式代码都无济于事。
猜你喜欢
  • 1970-01-01
  • 2017-07-05
  • 2014-06-17
  • 1970-01-01
  • 2015-12-27
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
相关资源
最近更新 更多