Regex.ai –让 AI 帮你写正则表达式丨再也不用学习正则了
发布时间:2025-05-21 11:41:36 发布人:远客网络
一、Regex.ai –让 AI 帮你写正则表达式|再也不用学习正则了
1、Regex.ai是一款基于AI的自动生成正则表达式的工具,它可以帮助用户轻松选择所需数据,自动生成正则表达式,并提供多种数据提取方式,让用户无需再学习正则表达式。
2、我一直以来都无法掌握正则表达式,每次使用都感到非常痛苦。
3、看不懂这些教程,感觉像是在看天书。
4、搜索到的例子不合适,用起来很糟糕。
5、通过前两代的经验,我学会了使用在线工具来验证正则表达式的有效性。例如,我之前分享的 Rubular正则表达式测试工具。
6、对于调试正则表达式来说,这个工具非常方便。
7、然而,你仍然需要掌握正则表达式。
8、最近,大家已经开始让 ChatGPT写正则表达式了。
9、虽然这个方法已经很方便,但仍然不够直观。
10、Regex.ai同样基于AI技术,比ChatGPT更加直观。它不再需要用语言描述,只需直接选择你想要获取的部分,就能自动完成。
11、使用Regex.ai书写正则表达式,只需三步:
12、就像现在饭店流行的扫码点餐一样,全程不用说话,不用面对服务员。有时候这个过程让人感到很爽,有时候又觉得不知道是好是坏。
13、使用AI真是太方便了。以前写一个正则表达式可能需要一个小时,现在只需要一分钟,真是个生产力工具。
14、最后,什么是正则表达式?正则表达式是一种用来匹配字符的表达式,它可以帮助我们找到一些特定的规律,比如一段文本中的所有电话号码、电子邮件地址等等。
15、我们可以把正则表达式看成一个很厉害的筛子,筛子里头有很多孔,我们可以根据我们想要的规律去挑选不同的孔来筛选出我们想要的信息。
二、怎么用正则表达式筛选身份证号码
这次给大家带来怎么用正则表达式筛选身份证号码,用正则表达式筛选身份证号码的注意事项有哪些,下面就是实战案例,一起来看一下。
在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。
居民身份证号码,正确、正式的称谓应该是“公民身份号码”。根据【中华人民共和国国家标准 GB 11643-1999】中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
以北京市朝阳区一女性身份证号码为例,身份证号码所表示的含义如下图所示:
注:该身份证号码来源于国标【GB 11643-1999】。
下面我们就从零开始完成一个完整的身份证号码校验过程。
根据以上规则,写出地址码的正则表达式:/^[1-9]\d{5}/
根据以上规则,写出年份码的正则表达式:/(18|19|20)\d{2}/。如果不需要18开头的年份,可以去掉18。
第一位数字为0,第二位数字为1-9
或者第一位数字为1,第二位数字为0-2
根据以上规则,写出月份码的正则表达式:/((0[1-9])|(1[0-2]))/。
第一位数字为0-2,第二位数字为1-9
根据以上规则,写出日期码的正则表达式:/(([0-2][1-9])|10|20|30|31)/。
根据以上规则,写出顺序码的正则表达式:/\d{3}/。
根据以上规则,写出校验码的正则表达式:/[0-9Xx]/。
综合以上6条规则,给出完整的正则表达式及测试程序如下:
var p=/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
console.log(p.test("11010519491231002X"));
console.log(p.test("01010519491231002X"));
console.log(p.test("11010517491231002X"));
console.log(p.test("11010519491331002X"));
console.log(p.test("11010519491232002X"));
console.log(p.test("11010519491232002a"));1.3方案1分析
方案1只是做了基本的格式判定,存在三个主要的不足:
地址码判定不够精确。例:我国并不存在16,26开头的地区,却可通过验证日期判定不够精确。例:19490231也可通过验证,而2月并不存在31日校验码是由17位本体码计算得出,方案1并未校验此码方案2(全面)
根据方案1的不足,引入方案2进而改进方案1的不足。
华北:北京11,天津12,河北13,山西14,内蒙古15
东北:辽宁21,吉林22,黑龙江23
华东:上海31,江苏32,浙江33,安徽34,福建35,江西36,山东37
西南:四川51,贵州52,云南53,西藏54,重庆50
西北:陕西61,甘肃62,青海63,宁夏64,新疆65
根据上述地址码做身份证号码的前两位校验,进一步的提高准确率。当前的地址码以2013版的行政区划代码【GB/T2260】为标准。由于区划代码的历史演变,使得地址码后四位校验变得不太可能。以三胖的身份证号为例,本人号码是2321开头,而当前行政区划代码表中并无此代码。因此本文只做前两位省级地址码的校验。
也有说法表述91开头是外国人取得中国身份证号码的前两位编码,但本人并未得到证实。如有持91开头身份证或认识马布里的,请帮忙确认相关信息。
根据以上分析,给出省级地址码校验及测试程序如下:
var provs={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门"};
console.log(checkProv(16));2.2出生日期码校验
出生日期码的校验不做解释,直接给出如下函数及测试程序:
var pattern=/^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;
var year= val.substring(0, 4);
var month= val.substring(4, 6);
var date= val.substring(6, 8);
var date2= new Date(year+"-"+month+"-"+date);
if(date2&& date2.getMonth()==(parseInt(month)- 1)){
console.log(checkDate("20180212"));
console.log(checkDate("20180231"));2.3校验码校验
校验码的计算略复杂,先给出如下公式:
其中 ai表示身份证本体码的第 i位值,而 Wi表示第 i位的加权因子值。
i12345678Wi791058421910111213141516176379105842X与校验码换算表【表2】
X012345678910a1810X98765432算法过程:
根据身份证主体码(前17位)分别与对应的加权因子(表1)计算乘积再求和,根据所得结果与11取模得到X值。
根据 X值查询表2,得出a18即校验码值。
校验码计算程序及测试见如下代码:
var p=/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
var factor= [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
var parity= [ 1, 0,'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
if(parity[sum% 11]== code.toUpperCase()){
console.log(checkCode("11010519491231002X"));
console.log(checkCode("110105194912310021"));2.4方案2整体代码
var date= val.substring(6,14);
if(checkProv(val.substring(0,2))){
console.log(checkID("11010519491231002X"));
console.log(checkID("110105194912310021"));
console.log(checkID("110105194902310026"));
console.log(checkID("160105194912310029"));相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
Vue.js自定义事件如何进行表单输入组件
三、正则表达式的完全匹配 re.fullmatch
1、正则表达式re.fullmatch在Python中的应用
2、在Python编程中,学习者需要掌握多种技能,如Python、C、Java等编程语言,以及考研的理论知识和实践项目,如初试、复试和毕业设计。在此基础上,理解并熟练运用正则表达式是数据分析和AI领域中的重要技能。
3、具体到正则表达式的完全匹配,re.fullmatch函数在Python中扮演着关键角色。它尝试从字符串的开始位置匹配整个模式,只有当整个字符串都与模式匹配时,才会返回一个匹配对象,否则返回None。
4、以下代码展示了如何使用re.fullmatch:
5、print(f"re.fullmatch(pattern, string1):{re.fullmatch(pattern, string1)}")
6、print(f"re.fullmatch(pattern, string2):{re.fullmatch(pattern, string2)}")
7、在给定的例子中,当我们使用正则表达式'\d+'匹配字符串'12345'时,由于整个字符串都是数字,re.fullmatch会返回匹配对象。然而,当字符串变为'12345abc',由于字符串尾部有非数字字符,re.fullmatch将返回None,因为模式没有完全匹配。
8、因此,正确答案是C选项:在string='12345abc'的情况下,re.fullmatch(pattern, string)返回None,因为模式没有匹配整个字符串。