gpt4 book ai didi

php - 使用正则表达式验证电子邮件地址

转载 作者:行者123 更新时间:2023-12-02 06:23:00 25 4
gpt4 key购买 nike

我刚刚开始学习编写 PHP 和 HTML 代码,并且看过一些关于正则表达式的教程,但是很难理解它们的含义。感谢您的帮助。

例如,我想验证电子邮件地址 peanuts@monkey.com。我从代码开始,收到无效电子邮件地址的消息。

  1. 我做错了什么?
  2. 我知道 ^ 等元字符表示字符串的开头,$ 表示字符串的结尾,但这是什么意思?字符串的开头和结尾是什么?
  3. 什么时候对正则表达式进行分组?

$emailaddress = 'peanuts@monkey.com';

if(preg_match('/^[a-zA-z0-9]+@[a-zA-z0-9]+\.[a-zA-z0-9]$/', $emailaddress)) {
echo 'Great, you have a valid email address';
} else {
echo 'boo hoo, you have an invalid email address';
}

最佳答案

如果您想要使用您所写的内容,只需进行一些小的修改即可,但是您在末尾错过了一个“+”。

1)

 ^[a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$ 

插入符号和美元字符匹配位置而不是字符,^ 等于行首,$ 等于行尾,它们用于锚定您的正则表达式。如果您编写没有这两个的正则表达式,您将在文本中的任何地方匹配电子邮件地址,而不仅仅是在这种情况下在一行上的电子邮件地址。如果您只写了 ^(插入符号),您会找到该行开头的每个电子邮件地址,如果您只写了 $(美元),您只会找到该行末尾的电子邮件地址.

Blah blah blah someEmail@email.comblah blah

不会给你一个匹配项,因为你在行的开头没有电子邮件地址,而且该行也不以它结尾,所以为了在这种情况下匹配它,你必须删除 ^ 和 $.

  1. 据我所知,使用分组有两个原因:反向引用和...分组。出于与数学中相同的原因使用分组,1 + 3 * 4 与 (1 + 3) * 4 不同。您使用括号来限制诸如“+”、“*”和“?”之类的量词。以及交替'|'等

您还为反向引用添加了括号,但由于我无法更好地解释它,所以我会将您链接到:http://www.regular-expressions.info/brackets.html

我会鼓励你看看这本书,即使你只读了前 2-3 章,你也会学到很多东西,这是一本好书! http://oreilly.com/catalog/9781565922570


正如评论员所说,这个正则表达式并不完美,但它可以工作并向您展示您忘记的内容。你离得不远!


按要求更新:

“+”、“*”和“?”是量词。这也是您分组的一个很好的例子。

  • '+' 表示匹配前面的任何字符或分组 1 或 n 次。
  • '*'表示匹配0次或n次前面的字符。
  • '?'表示匹配前面的任何字符或组 0 或 1 次。

n 次意思(无限期)

你使用 [a-zA-Z0-9]+ 的原因是没有 '+' 它只会匹配一个字符。使用 + 它将匹配很多,但它必须至少匹配一个。使用 * 可以匹配很多,但也可以匹配 0,而 ?最多匹配 1 个字符,但也匹配 0 个字符。

关于php - 使用正则表达式验证电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com