正则表达式学习

上面是一个正则表达式的例子,要学会这个学习正则表达式有几步呢?两步,1 看看基础规则。2 使用典型案例来学习,有问题返回步骤1。

1 基础规则

正则表达式基本上是线性从头到后的。规则如下:

来自:https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

要注意区别的是+和*。+是至少1次,*是可以0次。

另外要注意区分[] () {}:

[]是指代一个字符,如果[]+则表示连续出现,比如说[a,b]+就会匹配连续出现的a或者b;()是一组字符;{}表示的是重复次数。

2 练习

判断域名:

^(http|https|ftp):\/\/([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(\/\S*)?$

^是开始,(http|https|ftp)表示在三个协议头里面,:\/\/是分隔符。([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})表示域名部分,其中[a-zA-Z0-9.-]表示匹配字母数字和字符.和-。后面[a-zA-Z]{2,}是至少两个字母的顶级域名,(\/\S*)?表示后面的路径,?表示是可选的。$表示结束。

判断邮箱:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

^是开始,[a-zA-Z0-9._%+-]+表示允许字母数字和字符._%+-,后面的+表示允许多个。[a-zA-Z0-9.-]+这个和前面类似,[a-zA-Z]{2,}这个也是至少两个字符的顶级域名。$表示结束。

判断手机号:

^[1][3,4,5,6,7,8,9][0-9]{9}$

开始结尾就不说了,第一个字符必须是1,第二个字符必须是3456789中一个,后面有9个数字。数字可以用[0-9],用\d也可以。

中国大陆地区身份证号码:

^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}[\dX]$

第一个数字不为0,接着5个数字,后面必须是19或者20,因为只可能这两个年份出生的(除非125岁以上。。。)。后面两个数字,(0[1-9]|1[0-2])表示f分组,范围是0~12,就是月份。后面的日期是一样的写法。[\dX]表示校验码。可以是数字或者X。

包含大小写字母、数字、特称字符,至少8个字符,最多30个字符的密码

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()-_+=])[a-zA-Z\d!@#$%^&*()-_+=]{8,30}$

(?=.*[a-z]),使用正向预查来确保密码中至少包含一个小写字母。

其它类似。?=的说明可以看上面的表。

判断字符串只包含中文和数字

^[\u4e00-\u9fa5\d]+$

[\u4e00-\u9fa5]是中文Unicode的范围,\d是数字。

字符串是否包含刘备

^刘[\u4e00-\u9fa5]*备$

和上面的差不多。

3 小总结

综上可以看到,在一些复杂条件的判断,正则表达式还是很有优势。写代码去判断真的要搞半天,有些复杂的估计可以进leetcode了。网上很多在线验证正则表达式的地方,比如菜鸟,上去写两句一下就明白了。

最后,所有的表达式其实可以用GPT生成,也不用自己去写。。。懂一些基本概念即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值