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

2024-04-20

我刚刚开始学习 PHP 和 HTML 编码,并查看了一些有关正则表达式的教程,但很难理解这些含义。我很感激任何帮助。

例如,我想验证电子邮件地址[电子邮件受保护] /cdn-cgi/l/email-protection。我从代码开始,收到消息无效的电子邮件地址。

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

 

$emailaddress = '[email protected] /cdn-cgi/l/email-protection';

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]+$ 

插入符号和美元字符匹配位置而不是字符,^ 等于行的开头,$ 等于行的结尾,它们用于锚定您的正则表达式。如果您编写的正则表达式没有这两个,您将匹配文本中所有位置的电子邮件地址,而不仅仅是本例中单行的电子邮件地址。如果您只写了^(插入符号),您将找到行首的每个电子邮件地址,如果您只写$(美元),您将只能找到行尾的电子邮件地址。

等等等等等等[电子邮件受保护] /cdn-cgi/l/email-protection巴拉巴拉

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

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

您还可以使用括号进行反向引用,但由于我无法更好地解释它,因此我会将您链接到:http://www.regular-expressions.info/brackets.html http://www.regular-expressions.info/brackets.html

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


正如评论员所说,这个正则表达式并不完美,但它可以工作并告诉你你忘记了什么。你就在不远的地方!


按要求更新:

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

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

n次的意思(无限期)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式验证电子邮件地址 的相关文章

  • 发送 QUERY 数据包时出错。 PID=9565

    我有两个不同的环境开发和生活几乎都是相同的 但上述 标题中 警告仅在开发模式下发生 在此警告之前 我还收到错误消息 允许的内存大小 268435456 字节已耗尽 这仅发生在开发模式下 使用 PHP 版本 5 6 和 mysql 不是 my
  • PHP 命名空间 - 提升一个级别?

    示例1 命名空间 Inori Test 主测试类 示例2 命名空间 Inori Test SubTest SubTest 类扩展了 问题 有没有办法快速提升命名空间的级别 以便 SubTest 可以扩展 MainTest 就像是 MainT
  • 创建横幅交换算法来轮播广告

    我正在构建广告横幅轮播脚本基于印象整个月均匀地显示广告 每次请求显示广告时都会进行计算 所以这将是即时完成的 广告应显示为一个接一个轮流播放 而不是仅显示一个广告 1000 次展示 然后显示另一个广告 1000 次展示 大多数情况下 它应该
  • 如何传递数据到 Laravel 中查看?

    我将数据传递到我的刀片视图return View make blog posts 在我的刀片视图中 我正在尝试运行 foreach posts as post 我最终得到一个错误说 posts没有定义 我的问题是如何 posts数组被调用
  • php 时间戳 UTC

    我有一个 PHP MySQL 查询 它将一些数据插入 MySQL 数据库 并且包含时间戳 目前INSERT查询用途NOW 对于时间戳列 它以以下格式保存在数据库中 2012 07 24 13 13 02 不幸的是 对我来说 服务器不在我的时
  • 如何在MySQL中使用数字字符串的比较运算符?

    我有一个员工表 有类似领域的经验VARCHAR类型 此字段结合了用短划线 分隔的总年份和总月份 因此我必须按年份过滤具有 3 年以上经验的经验 我的表结构 所以现在我必须获得3年以上经验的id 我尝试如下 SELECT FROM emplo
  • Laravel Eloquent 在 with() 函数中使用别名

    再会 laravel 中使用 with 函数时是否可以使用别名 举个例子 posts Post where condition gt with user as friend gt get 简短的回答是否定的 但您可以定义与要使用的别名的关系
  • 如何使用 PHP 发送 OPTIONS 请求

    有谁知道如何使用 PHP 发送 OPTIONS 请求 我找不到执行此操作的curl setopt 我正在使用 php 5 6 7 我已经弄清楚了 GET POST DELETE 和 PUT 只需要选项 我已经尝试过以下 hd 的答案 ch
  • 从中间部分匹配完成建议elasticsearch

    我有一个名为搜索建议具有以下 search suggest type completion analyzer simple payloads true preserve separators false preserve position
  • 当 mysql_connect 不适用于 IIS 上的 PHP 时,不会返回任何错误消息

    我是 PHP 和 MySQL 的新手 最近在已经运行 IIS v6 的 Windows Server 2003 服务器上安装了 PHP v5 3 10 和 MySQL v 5 5 21 PHP 运行 我已经从 MySQL 5 5 命令行客户
  • 如何删除 BeautifulSoup 中的空格

    我正在使用 BeautifulSoup 解析一堆 HTML 除了一个小问题外 一切进展顺利 我想将输出保存到单行字符串中 以下内容作为我当前的输出 li span class plaincharacterwrap break Zazzafo
  • Google App Engine 密钥中允许使用哪些字符?

    在测试我的 Google App Engine 应用程序时 我搜索包含应用程序引擎密钥的链接 例如 story ag5yZXBsaWUtdGVzdGluZ3IMCxIFU3RvcnkY w0M 这些键中允许使用哪些字符 我一直在使用正则表达
  • 使用 PHP 将图像中的一种颜色替换为另一种颜色

    有人可以帮我编写一个简单的脚本 使用 PHP 将图像中的特定颜色替换为另一种颜色吗 这是一个示例 颜色从绿色变为黄色 如果你的意思是在 PHP 中使用 GD 库 你应该检查一下图像过滤器 http php net manual en fun
  • 推进并离开加入

    在教义中我可以 q Doctrine Query create gt from One o gt where t text aaa gt andWhere h text bbb gt leftJoin o Two t gt leftJoin
  • PHP:将 UTC 时间更改为太平洋时间(PST/PDT)[重复]

    这个问题在这里已经有答案了 我有一个 Datetime 对象并通过以下方式获取时间 today date Y m d H i s temp date gt getTimeStamp 我希望能够将其转换为加利福尼亚州的当前时间 但我需要考虑
  • 如何在 PHP 中复制此 C# 哈希? (toByteArray()、ComputeHash())

    我正在尝试复制以下代码PHP 这是我必须与之交互的 API 的示例代码 API 和示例代码位于C 我的应用程序在PHP 5 3 我不是 C 开发人员 因此在执行此操作时遇到困难 C Code I am trying to replicate
  • PHP 设计模式

    好的 我想首先让您注意到我一直在寻找 php mvc 设计模式 所以我还没有真正找到我想要的东西 现在 在写我的问题时 我找不到我要问的任何相关且具体的问题 但我知道我可能是错的 无论如何考虑这个问题和一个可能有用的问题包 Question
  • php-webdriver:使用 click() 提交表单后等待浏览器响应

    除了使用sleep 在我的测试中 我想知道是否有人知道更好的策略 可以在继续我的断言之前显式等待表单提交 POST 完成 这是我的测试的一个非常浓缩的版本 结合使用 phpunitphp webdriver https github com
  • 在 Codeigniter 中添加表前缀以加入

    我设置了 Codeigniter 将前缀 kms 添加到我的活动记录查询中 但是 我尝试使用两个 ON 条件进行连接 但它不会将它们放在前面 现在我必须像这样手动添加它们 this gt db gt join site items kms
  • PHP/Web 脚本保护

    我想用 PHP 和 javascript 编写一个脚本 并以某种方式保护我的源代码 以便我可以出售我的脚本 我正在寻找如何保护我的脚本的想法 如果我将其出售给某人 我如何阻止该人将其作为他们的产品重新分发 我知道有ZEND和ionCube

随机推荐

  • 如何将“旧的 spring mvc 控制器与 jsp”和“vaadin7 ui”集成在一起

    我正在尝试将 vaadin 与我的 spring mvc 应用程序集成 我有一些带有 jsp 文件的 url spring mvc 控制器使用它们 例如 mysite com spring mysite com spring example
  • Zend 引擎可以嵌入 PHP 之外吗?

    如果我记得的话 Zend 引擎的原始设计之一是它相对容易嵌入人们可能希望创建的其他语言 基本上 PHP 语法没有所有 PHP 模块 现在还是这样吗 嗯 Zend 引擎基本上是一个解释 PHP 字节码的虚拟机 基本上 您要做的就是为一种语言和
  • 为什么这个 css 动画无限自动播放轮播会在项目重置时跳转?

    我正在努力根据此处的示例创建无限自动播放轮播 https codepen io jackoliver pen qVbQqW https codepen io jackoliver pen qVbQqW 请注意 codepen 示例是多么流畅
  • java jar 的清单属性

    在您的帮助下 我完成了我的第一个 Java 项目 现在我想创建一个 jar 并从 jar 运行应用程序 Java 项目 它是一个普通的控制台应用程序 它有另一个项目 控制台应用程序 作为依赖项 我通过右键单击 导出 创建一个 jar 使用
  • 使用 C# 运行 T4 模板

    我有 T4 模板 mycode tt 它生成一个 cs 文件 我通常右键单击 tt 文件并选择 RunCustomTool 它会在内部获取 xml 文件并为我生成代码 现在我想使用 C Windows 应用程序运行自定义工具 因此 单击按钮
  • 如果您无法控制类,如何模拟类中的方法?

    我使用 Xunit 和 Moq 进行单元测试 到目前为止 我能够成功地模拟和测试接口中的方法 但是我应该如何模拟和测试我无法控制的类的方法 该类没有接口 方法也不是虚拟的 我研究了 Type Mock Isolator 但我无法使其工作 而
  • 订购 ActiveRecord 关系对象

    我有一个名为的 ActiveRecord 对象contact 它有一个关系叫做profiles 这些配置文件具有 url 属性 配置文件应按 url 按字母顺序排序 我试过了sort by也order但我收到此错误 contact prof
  • 使用 Ajax 将 JSON 发送到 WCF 3.5

    我在将 JSON 传递给 Weight 方法时遇到问题 我不断得到HTTP 1 1 415 Cannot process the message because the content type application x www form
  • 将照片上传到 Google Photos API 不返回上传令牌

    我正在使用 2018 版 Google Photos API 来上传图像和媒体 如下所述 上传字节 https developers google com photos library guides upload media uploadi
  • 嵌入式 Windows XP 中的网络接口设置

    给定设备描述 即出现在 设备属性 gt 连接使用 文本框中的字符串 我们如何获取网络接口名称 即出现在 网络连接 对话框中的名称 我们必须使用纯 C C 语言 或者通过一些标准命令行工具 例如 netsh ipconfig 或者两者的组合来
  • 数字中的下划线是什么意思? [复制]

    这个问题在这里已经有答案了 我想知道为什么以下变量被视为数字 a 1 000 000 print a 1000000 不应该print a return 1 000 000 使用 Python 3 6 以及PEP 515 https www
  • AspNetCore 抽象无法加载

    I use 适用于 Visual Studio 的 ASP NET Core Angular 2 模板 http blog stevensanderson com 2016 10 04 angular2 template for visua
  • 从 User.rb 模型访问 ApplicationHelper

    这是一些不起作用的简单代码 module ApplicationHelper def industries industries Agriculture Food etc end end class User lt ActiveRecord
  • Oracle Apex - REST 数据源 - 嵌套 JSON 数组 - 触发两个表 - 删除函数错误 ORA-04091

    这个问题是另一个问题的后续所以问题 https stackoverflow com questions 75219903 oracle apex rest data source nested json array trigger two
  • '类型'从不'上不存在属性

    这类似于 40796374 https stackoverflow com questions 40796374 property x does not exist on type never但这是关于类型的 而我正在使用接口 给出下面的代
  • 使用 LifecycleObserver 的生命周期感知组件如何感知屏幕方向的变化

    制作生命周期感知组件非常简单LifecycleObserver例如暂停和停止MediaPlayer当用户离开屏幕时 但有什么办法让我知道生命周期是否正在经历onPause onStop等等只是因为配置发生了变化 在这种情况下 我不会对Med
  • 较大数的非不同质因数

    我编写并使用这个函数来生成数字的质因数 import numpy as np from math import sqrt def primesfrom3to n Returns a array of primes p lt n assert
  • QML GridLayout 跨度

    如何使洋红色矩形比红色矩形短 6 倍 GridLayout id gridLayout anchors fill parent flow GridLayout TopToBottom Rectangle color magenta Layo
  • 如何在实例化时将值插入到 C# 字典中?

    有谁知道是否有办法在创建 C 字典时将值插入到它中 我可以 但不想这样做dict Add int string 对于每个项目 如果有更有效的东西 例如 Dictionary
  • 使用正则表达式验证电子邮件地址

    我刚刚开始学习 PHP 和 HTML 编码 并查看了一些有关正则表达式的教程 但很难理解这些含义 我很感激任何帮助 例如 我想验证电子邮件地址 电子邮件受保护 cdn cgi l email protection 我从代码开始 收到消息无效