pgsql,函数,postgresql正则表达式匹配,re,手机号、姓名(包含少数民族)、身份证号 |
您所在的位置:网站首页 › 怎么筛选11位手机号码 › pgsql,函数,postgresql正则表达式匹配,re,手机号、姓名(包含少数民族)、身份证号 |
pgsql,(Postgresql) 正则匹配查询。
项目中新增的功能,需要对手机号、姓名、身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法。
pgsql,(Postgresql) 正则匹配查询。 操作符描述例子~匹配正则表达式,大小写相关'thomas' ~ '.*thomas.*'~*匹配正则表达式,大小写无关'thomas' ~* '.*Thomas.*'!~不匹配正则表达式,大小写相关'thomas' !~ '.*Thomas.*'!~*不匹配正则表达式,大小写无关'thomas' !~* '.*vadim.*'
和 LIKE共同点:模式字符准确地匹配字串字符, 除非在正则表达式语言里有特殊字符。不过正则表达式用的特殊字符和 LIKE 用的不同。 和 LIKE 不同点:正则表达式 可以匹配字串里的任何位置。 pgsql存储过程,pgsql函数。 1:匹配姓名(含少数民族);验证规则是:姓名由汉字或汉字加“•”、"·"组成,而且,“点”只能有一个,“点”的位置不能在首位也不能在末尾,只有在汉字之间才会验证通过。 正确的匹配到姓名:返回数字0, 状态1和2都是错误的匹配。 create function check_name(name_per text) returns integer language plpgsql as $$ --------------------------------------------- -- 1.长度,2-11 -- 2.无特殊符号及数字、字母,·除外,^[\u4e00-\u9fa5]{0,}$ --------------------------------------------- declare begin if length(name_per) =11 then return 1; else if replace(name_per,'·','') ~* '^[\u4e00-\u9fa5]{0,}$' then return 0; else return 2; end if; end if; end; $$; alter function check_name(text) owner to postgres; 2:验证手机号(phone number)。验证规则:第一位只能是1,第二位为3-8中的数字,3-11位为任意的数字。 --------------------------------------------- -- 手机号号段校验, -- 第1位:1; -- 第2位:{3、4、5、6、7、8}任意数字; -- 第3—11位:0—9任意数字 --------------------------------------------- -- ("^1[3|4|5|6|7|8][0-9]\d{8}$"); 3:验证身份证号。验证规则是:由15位数字或18位数字(17位数字加“x”)组成,15位纯数字没什么好说的,18位的话,可以是18位纯数字,或者17位数字加“x”。 --------------------------------------------- -- 1. 验证输入的身份证号是否合法 --------------------------------------------- -- ("(^\d{15}$)|(^\d{17}([0-9]|X)$)");最后:注意re正则的转义,字符转义。
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |