正则表达式

定义

正则表达式实际上是描述了一种字符串匹配的模式。

作用

检查一个串是否含有某种子串,

实际中经常在数据质量中用来检查某个字符串是否符合某种标准。

MySQL 正则表达式

一个简单的示例

1、查询字符串是否存在数字0-9(0:无,1:有)【不使用数据库表,仅仅查询某个字符串中是否含有数字0-9】

select 'qwrt23a' regexp '[0-9]';

2、查询表中有“o”的结果【使用数据库表】. : 匹配除“\n”之外的任意单个字符,*匹配前面的子表达式零次或多次,

select * from t_user where loginName regexp '.*o';

3、查询表中以“o”为结尾的结果【使用数据库表】$ : 匹配输入字符串的结束位置

select * from t_user where loginName regexp '.*o$';

 空白元字符

元字符描述
[ ... ]字符集合。匹配所包含的任意一个字符。
.匹配除 "\n" 之外的任何单个字符。
^匹配输入字符串的开始位置。

$

匹配输入字符串的结束位置。
[^...]负值字符集合。匹配未包含的任意字符
|与 “or”的用法一致,匹配   _或_
*零次或多次匹配前面的子表达式
+一次或多次匹配前面的子表达式
{n}n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

测试上述空白元字符

1、查询以t开头的所有信息

select * from t_user where loginName regexp '^t'

2、查询以o结尾的所有信息

select * from t_user where loginName regexp '.*o$';

3、查询字符串中除“\n”的所有信息

select * from t_user where loginname regexp '.'

4、查询字符串中有任意o或者t的所有信息

select * from t_user where loginname regexp '[ot]'

5、查询各字符串中没有o或者t的所有信息

select * from t_user where loginname regexp '[^ot]'

6、查询字符串中有to和tom的所有信息

select * from t_user where loginname regexp 'to|tom'

select * from t_user where loginname regexp 'to(|m)'

7、查询各字符串中出现1次t 0/多次o的所有信息

select * from t_user where loginname regexp 'to*'

8、查询各字符串中出现1次t 1/多次o的所有信息

select * from t_user where loginname regexp 'to+'

9、查询各字符串中出现1次o的所有信息

select * from t_user where loginname regexp 'o{1}'

10、查询各字符串中出现最多1次o,最少0次o的所有信息

select * from t_user where loginname regexp 'o{0,1}'

 小型案例(MySQL验证邮箱是否正确)

一般域名的规律为“[N级域名][三级域名.]二级域名.顶级域名”

顶级域名一般为2~4位(如cn、com、club)

原始数据

select email
from testze
where email regexp ( '^[a-z0-9]+[a-z0-9._-]+@[a-z0-9.-]+\\.[a-z]{2,4}$');

 结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值