【SQL 模式匹配】如何验证电子邮箱的合法性?
文章目录
- 准备工作
- LIKE 运算符
- 转义字符
- 数据库扩展
- MySQL 正则表达式
- Oracle 正则表达式
- SQL Server 正则表达式
- PostgreSQL 正则表达式
- SQLite 正则表达式
- 参考文档
字符串的模式匹配(pattern matching)是指给定一个模式,然后判断某个字符串是否满足该模式。常见的应用包括敏感词的检测、身份证校验、IP 地址验证等。
本文以验证电子邮箱的合法性为例,介绍如何在 SQL 中实现字符串的模式匹配,涉及的数据库包括 MySQL、Oracle、SQL Server、PostgreSQL 以及 SQLite。下表列出了这些数据库对于模式匹配的支持情况:
模式匹配 | MySQL | Oracle | SQL Server | PostgreSQL | SQLite |
---|---|---|---|---|---|
LIKE 运算符 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
正则表达式 | REGEXP_LIKE() | REGEXP_LIKE() | ~ |
接下来我们详细讨论不同数据库的具体实现细节。
准备工作
我们首先创建一个测试表,并且生成一些测试数据:
CREATE TABLE test (email VARCHAR(50)
);INSERT INTO test VALUES ('TEST@qq.com');
INSERT INTO test VALUES ('test@qq');
INSERT INTO test VALUES ('.123@qq.com');
INSERT INTO test VALUES ('test+email@sina.cn');
INSERT INTO test VALUES ('me.qq.com');
INSERT INTO test VALUES ('123.test@sql.org');
对于 Web 开发中常见的邮箱地址验证问题,我们首先需要定义一个合法电子邮箱的规则。电子邮箱一般格式为:用户名@域名;以下是一个简单的规则:
- 以字母或者数字开头,后面跟一个或者多个字母、数组或特殊字符( . _ - );
- 然后是一个 @ 字符;
- 接着是一个或者多个字母、数组或特殊字符( . - );
- 最后是域名,即 . 以及 2 到 4 个字母。
对于以上规则,使用正则表达式可以描述如下:
^[a-zA-Z0-9]+[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$
简单说明一下,^ 表示匹配字符串的开头;[a-zA-Z0-9] 匹配大小写字母或数字;+ 表示匹配前面的内容一次或多次;. 匹配任何一个字符,\. 匹配点号自身;{2,4} 匹配前面的内容 2 次到 4次;$ 表示字符串的结束。
【SQL 模式匹配】如何验证电子邮箱的合法性?相关推荐
- html 邮政编码格式,js与jquery正则验证电子邮箱、手机号、邮政编码的方法
本文实例讲述了js与jquery正则验证电子邮箱.手机号.邮政编码的方法. jQuery代码: //验证邮政编码 $("#postcode").blur(function(){ / ...
- html验证邮箱和手机号,js与jquery正则验证电子邮箱、手机号、邮政编码的方法
本文实例讲述了js与jquery正则验证电子邮箱.手机号.邮政编码的方法. jQuery代码: 获取邮政编码 var postcode=$("#postcode").val(); ...
- js验证电子邮箱,js验证email合法性,javascript验证电子信箱
<script> function Juge(theForm) { if (theForm.txtemail.value == "") { alert( ...
- java邮箱地址正则表达式_JAVA 电子邮箱格式验证,使用正则表达式
正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),能够用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. ...
- JAVA 电子邮箱格式验证,使用正则表达式
正则表达式 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. ...
- leetcode182. 查找重复的电子邮箱(SQL)
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. 示例: +----+---------+ | Id | Email | +----+---------+ | 1 | a@b ...
- 关于Microsoft电子邮箱验证代码
刚入大学买的电脑,真的是一窍不通的小白,让我自己安装设置账户,不知道该咋整就一步一步按着来. 到了电子邮箱这一块直接寄了,因为他上面显示已经向我原先瞎创建的一个电子邮箱发送了代码,要输入那个安全代码激 ...
- 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个. Id Email 1 john@example.com 2 bob@example.c ...
- 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
题目 编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个. +----+------------------+ | Id | Email | + ...
最新文章
- 多模态理论张德禄_观点 | 多模态研究:认知语言学的新方法
- java难点解析(七)-抽象类
- 在Python中定义和使用抽象类的方法
- 【Java】Java趣味分享:try finally
- docker 部署了一个网站玩
- Hive静态分区和动态分区
- 最近好颓废啊,改过自新就从收拾自己的东西开始吧
- 如何编译CWM Recovery
- CATIA_CAA_RADER26+VS2012安装教程
- php探针教程,php探针程序的推荐
- 见证“开放式多路供水”的技术难度应大于人类上天!
- xp系统安装金蝶k3服务器配置,XP单机版安装金蝶K3的13.1版本号,金蝶K3Wise安装步骤,安装成功...
- C语言实现洛谷题库中的 P1125 [NOIP2008 提高组] 笨小猴
- 目标优化之帕累托最优
- 动态内存管理(开辟以及释放动态内存空间)
- windows安装hadoop教程,带截图
- 解决调用wx.downLoadFile下载的文件名乱码(长串英文字符)问题
- dpdk pktgen发包工具使用
- Httpd:无法找到/etc/httpd/conf
- 中职c语言多选题及答案,国二c语言题库选择题答案
热门文章
- nashorn中对象返回ScriptObjectMirror 后,toString的问题
- js-03--for、while、continue、break、断点调试、数组、
- java基础-哈希映射和哈希集
- 数栈技术干货:从0到1实现谷歌插件开发探索及应用
- 你迷茫吗?是的我很迷茫。迷茫那是因为你读书太少!
- Windows 10 基于 IIS 搭建 GitLab
- 计算机思维在数学中的应用,浅谈数学思维方式在计算机教学中的应用
- tf.keras.activations.gelu tensorflow1.15.0
- MPI Collective Communications
- Mecanim的简单应用