C++正则表达式校验某个字符串是否是合格的email

news2024/9/23 23:30:46

C++正则表达式校验某个字符串是否是合格的email

可以借助正则表达式校验某个字符串是否是合规的电子邮箱。对于邮箱的正则表达式有严格的模式,如:^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$
对应的C++实现如下:
// EmailValidator.h

#ifndef EMAIL_VALIDATOR_H
#define EMAIL_VALIDATOR_H

#include <string>

// Email地址校验类
class EmailValidator
{
public:
	// 校验email是否是合法的email地址
	static bool isValidEmail(const std::string& email);
};

#endif	// EMAIL_VALIDATOR_H

// EmailValidator.cpp

#include "EmailValidator.h"
#include <regex>

namespace {
	const std::string EMAIL_PATTERN = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*" \
		"@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
}

bool EmailValidator::isValidEmail(const std::string& email)
{
	std::regex pattern(EMAIL_PATTERN);
	// Tests whether a regular expression matches the entire target string.
	if (std::regex_match(email, pattern)) {
		return true;
	}
	return false;
}

//测试main.cpp

#include "EmailValidator.h"
#include <iostream>

using namespace std;

// C++11标准 STL正则表达式 验证电子邮件地址
// https://blog.csdn.net/kyfvc/article/details/41082025

int main(int argc, char* argv[])
{
	std::string emailAddress;

	// while (std::getline(cin, emailAddress))
	while (cin >> emailAddress)
	{
		if (EmailValidator::isValidEmail(emailAddress)) {
			std::cout << "您输入的电子邮件地址: " << emailAddress << " 合法" << std::endl;
		} else {
			std::cout << "您输入的电子邮件地址: " << emailAddress << " 不合法" << std::endl;
		}
	}


	return 0;
}

运行结果如下图所示:
c++正则表达式校验是否是合法的邮箱地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试基础概念及常见开发模型和测试模型

目录 1.需求的概念 2.测试用例 3.什么是BUG 4.软件的生命周期 5.开发模型和测试模型 开发模型 瀑布模型 快速原型模型 螺旋模型 增量模型 敏捷方法 scrum三大角色 测试模型 V模型 W模型 1.需求的概念 衡量软件测试结果的依据—需求 概念&#xff1a;满足用户期…

变量与数据类型

专栏简介&#xff1a;本专栏作为Rust语言的入门级的文章&#xff0c;目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言&#xff0c;虽然历史没有C、和python历史悠远&#xff0c;但是它的优点可以说是非常的多&#xff0c;既继承了C运行速度&#xff0c;还拥有了Java…

互联网未来信任锚点,后量子计算标准与迁移势在必行

作者 | 宋慧 出品 | CSDN 云计算 图片 | 视觉中国 IT、数字化正在深刻改变和加速全行业的效率与创新。不过&#xff0c;互联网的信息通信安全基石——密码学技术仍在使用第一代公钥密码算法&#xff0c;而随着量子计算的产生发展&#xff0c;以离散对数和大数分解这类等价的数…

深入理解网络通信和TCP、IP协议-01

1、网络协议 计算机网络是什么&#xff1f; 随着计算机技术发展&#xff0c;计算机的体积和价格都在下降&#xff0c;之前计算机多用于研究机构&#xff0c;现 阶段逐步进入一般的公司用于办公。原来计算机之间传输数据需要通过软盘等第三方存储介 质进行转存&#xff0c;人们…

【CXL】CXL ATS 介绍

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

《代码随想录》专题:二叉树的遍历

0、二叉树的遍历方式总结 二叉树主要有两种遍历方式 深度优先遍历&#xff1a;先往深走&#xff0c;遇到叶子节点再往回走。广度优先遍历&#xff1a;一层一层的去遍历。 从深度优先遍历和广度优先遍历进一步拓展&#xff0c;才有如下遍历方式 深度优先遍历 前序遍历&#xff…

【网络编程】网络编程核心概念与模式

配套环境 vscode、gcc、ubuntu22.04 概念描述 网络编程的本质 使用操作系统提供的接口函数&#xff0c;使得应用程序具备收发网络数据的能力。 网络接口在代码层面是操作系统提供的函数 应用程序通过网络接口使用操作系统的联网能力 网络编程核心概念 协议&#xff1a;为进…

STM32——led灯的点亮+闪烁+流水灯的实现

文章目录 一、LED点亮1.原理2.寄存器方式--代码3.库函数--代码4.结果展示 二、LED闪烁三、LED流水灯1.代码2.结果展示 一、LED点亮 1.原理 其方式有两种一种是寄存器方式一种是库函数方式&#xff0c;但其原理都是一样的。如原理图所示&#xff0c;与LED相连接的IO口置低电平…

HTML学习 第一部分(前端学习)

参考学习网站: 网页简介 (w3schools.com) 我的学习思路是&#xff1a;网站实践视频。 视频很重要的&#xff0c;因为它会给你一种开阔思路的方式。你会想&#xff0c;噢&#xff01;原来还可以这样。这是书本或者网站教程 所不能教给你的。而且&#xff0c;对一些教程&#…

【深度解析】OSPF-开放式最短路径优先协议

目录 重点&#xff1a; VPN---Virtual Private Network(虚拟专用网络隧道) OSPF网络类型&#xff1a; 表格视图&#xff1a; P2P---点对点协议 BMA---广播多路访问网络 NBMA---非广播多路访问网络 P2MP---点对多点协议 OSPF认证&#xff1a;检测类型&#xff0b;密码 …

陪诊师接单app开发|陪诊小程序开发|陪诊师接单系统开发

随着人们健康意识的提高和医疗服务的不断完善&#xff0c;陪诊服务逐渐受到人们的关注和需求。为了满足顾客的需求&#xff0c;陪诊小程序应运而生。下面将介绍陪诊小程序开发的几个优势。   1. 提供方便的预约和服务体验   陪诊小程序可以让顾客随时随地通过手机预约陪诊服…

Java034——反射(Reflection)

一、Java中的反射及作用 Java的反射(reflection)机制是指在程序的运行状态中&#xff1a; 可以构造任意一个类的对象&#xff0c;可以了解任意一个对象所属的类&#xff0c;可以了解任意一个类的成员变量和方法&#xff0c;可以调用任意一个对象的属性和方法。 一句话&#…

3.类与对象

Java作为一种面向对象语言。支持以下基本概念&#xff1a; 多态继承封装抽象类对象实例方法重载 1.类与对象 对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为 类&#xff1a;类是一个模板&#xff0c;它描述一类对象的行为和状态 public class Dog {String bree…

编程语言里的转义字符真的叫转义字符吗?

我们先来看看别人是怎么说转义字符的&#xff1f; 这是我随便从两本书上截图来的&#xff0c;总的来说就是反斜杠加几个字符就是转义字符。 就问你晕不晕&#xff0c;斜杠加几个字符至少是两个字符&#xff0c;那还叫字符吗&#xff0c;那叫字符串吧&#xff0c;怎么取名转义字…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 LlamaIndex 集成搭建文档问答系统

目录 准备工作 准备数据 主要参数 处理数据 开始提问 本文将演示如何与集成 LlamaIndex 从指定源获取信息。 在 ChatGPT 占领各大头条时,越来越多的企业在考虑如何在它们的产品中使用 ChatGPT。一个比较大的使用场景就是如何使用 ChatGPT 来改造产品文档孱弱的搜索能力。…

【板栗糖GIS】——通过插件调教网页版b站首页

【板栗糖GIS】——通过插件调教网页版b站首页 参考视频&#xff1a;利用adblock关掉热搜和搜索推荐_哔哩哔哩_bilibili 在edge浏览器上使用的插件为Adblockplus&#xff0c;可以在插件中心查询到 拦截元素如下&#xff1a; bilibili.com##.adblock-tipsbilibili.com##.trend…

2023/7/15总结

JWT 在写项目的时候&#xff0c;本来想着把用户的数据全部存入session这样的话就不用每次都需要带用客户端的账号。后面了解到JWT&#xff0c;这个是在服务器无状态的一个方式。 具体是分为三个部分&#xff0c;第一个是头部主要存储用到的算法等信息&#xff0c;第二个是载荷…

51单片机--DS1302时钟

文章目录 DS1302引脚定义和应用电路内部结构框图寄存器的定义时序定义BCD码DS1302时钟代码 DS1302 DS1302是美国DALLAS公司推出的一款实时时钟电路芯片。它具有高性能和低功耗的特点&#xff0c;可以通过SPI三线接口与CPU进行同步通信。DS1302能够提供秒、分、时、日、星期、月…

HTML基础教程

1 什么是HTML HTML 是用来描述网页的一种语言。HTML 是一种在 Web 上使用的通用标记语言。HTML 允许你格式化文本&#xff0c;添加图片&#xff0c;创建链接、输入表单、框架和表格等等&#xff0c;并可将之存为文本文件&#xff0c;浏览器即可读取和显示。 HTML 指的是超文本…

复用cmake代码的其他方法

复用cmake代码的其他方法 函数和宏是代码复用的方法,在cmake3.18版本开始,cmake添加了cmake_language()命令,通过这个命令我们可以直接调用任意的cmake代码,无需将这些可复用的代码使用函数或者宏包起来. 当然cmake_language()命令不是为了代替函数和宏而设计的,而是希望通过…