使用...正则表达式在PHP中验证电子邮件?

时间:2015-02-08 21:32:54

标签: php regex validation email formatting

我正在读一本学习PHP的书,我有一个问题!

这是电子邮件验证代码的一部分:

$pattern = '/\b[\w.-]+@[\w.-]+\.[A-Za-z]{2,6}\b/';
if(!preg_match($pattern, $email))
{ $email = NULL; echo 'Email address is incorrect format'; }

有人可以向我解释'$ pattern'在做什么吗? 我不确定,但从我以前所知的关于使用连接到网站的应用程序进行编码的情况来看,我认为这可能是“正则表达式”?

如果有人能向我解释这条线,我很感激。此外,如果它是“正则表达式”,你能提供一个链接到某个地方,只是简单解释它是什么以及它是如何工作的?

1 个答案:

答案 0 :(得分:1)

正则表达式是正则表达式:它是描述一组字符串的模式,通常是所有可能字符串集的子集。正则表达式可以使用的所有特殊字符都在您的问题被标记为重复的问题中进行了解释。

但特别针对你的情况;有一个很好的工具可以解释正则表达式here

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char
--------------------------------------------------------------------------------
  [\w.-]+                  any character of: word characters (a-z, A-
                           Z, 0-9, _), '.', '-' (1 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  @                        '@'
--------------------------------------------------------------------------------
  [\w.-]+                  any character of: word characters (a-z, A-
                           Z, 0-9, _), '.', '-' (1 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  \.                       '.'
--------------------------------------------------------------------------------
  [A-Za-z]{2,6}            any character of: 'A' to 'Z', 'a' to 'z'
                           (between 2 and 6 times (matching the most
                           amount possible))
--------------------------------------------------------------------------------
  \b                       the boundary between a word char (\w) and
                           something that is not a word char

以正确的方式验证电子邮件地址

但是如果你使用PHP> = 5.2.0(你可能是),你不需要使用正则表达式。使用内置filter_var()

的代码更清晰
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // email valid
} else {
    // email invalid
}

您不必担心边界案件或任何事情。