正则表达式与脱敏

一、正则表达式

定义了一种规则去匹配符合规则的字符串。一般用来检索、替换那些符合某个模式(规则)的文本。

常见的正则表达式符号
^ 匹配行首,以什么开头
$ 匹配行尾,以什么结尾

* 匹配前面的子表达式任意次。
+ 匹配前面的子表达式一次或多次(大于等于1次)。
? 匹配前面的子表达式零次或一次。

x|y 匹配x或y。
[xyz] 字符集合。匹配所包含的任意一个字符。
[^xyz] 负字符集合。匹配未包含的任意字符。

​\d 表示一位数字,等价于 [0-9]。
​\D 匹配一个非数字字符。等价于 [^0-9]。


​常用正则表达式

1、匹配身份证号
身份证号是一串18位数字和字母的组合,其中最后一位可能为数字或者字母 X。

[1-9]\d{5}(19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[Xx\d]

[1-9]\d{5} 匹配前六位地址码,第一位不能为 0。
(19|20)\d{2} 匹配出生年份,从 1900 年至今。
((0[1-9])|(1[0-2])) 匹配出生月份,01 至 12。
(([0-2][1-9])|10|20|30|31) 匹配出生日期,考虑了每个月的天数和闰年的情况。
\d{3} 匹配顺序码,通过性别和出生时间来区分。
[Xx\d] 匹配校验码,最后一位可能为数字或字母 X。


2、匹配手机号

1[3-9]\d{9}


​3、匹配中文

[\u4e00-\u9fa5]

​\u4e00 和 \u9fa5 是 unicode 编码,正好是中文编码开头和结尾对应的数值。
​[],用于表示一个字符集合。 - 在 [] 中表示字符范围。

^[12]\d{2}$

这个正则表示以1或2开头的三位数
^表示字符串开头,[12]表示字符1或者2
\d表示一位数字,\d{2}表示两位数字,$表示字符串结束

notepad正则表达式使用

多行处理成一行
查找内容: \r\n
替换为: 需要替换的字符

二、脱敏

md5加密

select md5(linkmen) as linkmen from import_db.lianxiren;

如果字段值是个json串,想对其中的中文姓名进行脱敏,估计得写个百家姓的集合

select
linkmen,
regexp_replace(regexp_replace(linkmen,'1[2-9][0-9]{9}','***'),'[王|赵|钱|孙|李].','**') as linkmen2
from import_db.lianxiren;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值