oracle 正则 匹配 身份正 手机号

1.正则匹配身份证号:

regexp_like(card_id,'^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$')


^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$
^[1-9]:第一位数字不能为0。
\d{5}:接下来是五位数字,表示地区码。
(18|19|20)?:接下来的两位数字是年份的前两位,可以是18、19或20。
\d{2}:接下来是两位数字,表示年份的后两位。
(0[1-9]|1[0-2]):接下来是一位数字,表示月份。
(0[1-9]|[12]\d|3[01]):接下来是一位数字,表示日期。
\d{3}:接下来是三位数字,表示顺序码。
(\d|X)$:最后一位是校验码,可以是数字0-9或者字母X。
请注意,这个正则表达式没有考虑15位身份证号码,也没有进行校验码的验证。如果需要校验码验证,你需要编写更复杂的逻辑来计算和比较校验码。
如果你还需要匹配15位的身份证号码,可以修改正则表达式如下:
      REGEXP_LIKE(your_column, '^[1-9]\\d{5}\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}$')
   OR REGEXP_LIKE(your_column, '^[1-9]\\d{5}(18|19|20)?\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}(\\d|X)$');

2.正则匹配手机号

regexp_like(phone,'^[1]([3-9])[0-9]{9}$')

^[1]([3-9])[0-9]{9}$
这个正则表达式的解释如下:

^:匹配字符串的开始。
[1]:手机号码以数字1开头。
([3-9]):第二位数字可以是3到9之间的任意数字。
[0-9]{9}:接下来是9位数字。
$:匹配字符串的结束。
在Oracle SQL中使用这个正则表达式来匹配手机号码的示例如下:

sql
SELECT * FROM your_table
WHERE REGEXP_LIKE(your_column, '^[1]([3-9])[0-9]{9}$');
请将your_table替换为你的表名,your_column替换为包含手机号码的列名。

这样,你就可以使用这个正则表达式来筛选出符合手机号码格式的记录了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AAEllisonPang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值