正则表达式的相关问题:

1:如何用正则表达式搜索ip地址

正则匹配的基本知识和概念:

[abc] :代表a或b或c中字符的任意一个

[^abc] :代表除abc外的任何字符

[a-z] :a到z中小写字符的任意一个

[A-Z] : 大写字符的任意一个

[a-zA-Z0-9] :代表三者中的任意一个字符

[a-dm-p] :a到d,m到p之间的任何一个字符

正则表达式:

&& 且 ; | 或

预定义字符:

“.” :匹配任何字符

"\d" :任何数字0到9简写

"\D" : 任何非数字0到9的简写

"\s" :空白字符:[\t \n \x0B \f \r] 的简写

"\S" : 非空白符 :[ ^\s]的简写

"\w" : 单词字符 :[a-zA-Z0-9]的简写

"\W" : 非单词字符[ ^\w ]

正则表达式-数量词:

x? : 0次或1次

x* : 0次到多次

x+ : 1次或多次

X{n} : 恰好n次

X{n,} : 至少n次

X{n,m}: n到m次(n和m都是包含的,最少n次,最多m次。

###

\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}
-------->
(\d{1,3}.){3}\d{1,3}
会匹配到255以上,存在不合法ip
-------->
((1\d{2}.)|(2[0-5]{2}.)|(\d{1,2}.)){3}((\d{1,2})|(1\d{2})|(2[0-5]{2}))
识别过程中由于|,识别的顺序不同导致ip地址会识别到非法ip地址
-------->
单独先识别第一段ip地址,把第一个子表达式单另拉出来加上^表示第一段ip地址开头为(\d{1,2}),
(^((2[0-5]{2}.)|(1\d{2}.)|(\d{1,2}.))((2[0-5]{2}.)|(1\d{2}.)|(\d{1,2}.){2})((1\d{2})|(2[0-5]{2})|(1\d{2})))
无法匹配到2开头的,第三位存在大于5的数字的合法ip地址
-------->
((2[0-4]\d.)|(25[0-5].)|(1\d{2}.)|(\d{1,2}.))
200-249 250-259 100-199 00-99
((2[0-5]{2}.)|(1\d{2}.)|(\d{1,2}.){2})
200-255 | 100-199 | 00-99 识别两次
((1\d{2})|(2[0-5]{2})|(\d{1,2})))
100-199 | 200-255 | 00-99 不识别小数点

((2[0-4]\d.)|(25[0-5].)|(1\d{2}.)|(\d{1,2}.))((2[0-5]{2}.)|(1\d{2}.)|(\d{1,2}.){2})((1\d{2})|(2[0-5]{2})|(\d{1,2})))

2:如何用正则表达式匹配身份证号:

^[1-9]\d{5}(19|([2]\d))\d{2}((0[1-9])|((10|11|12))[0-2] [1-9]|10|20|30|31)\d{3}(\d|x|X)
^[1-9]\d + \d{5}
1-9开头 + 0-9随机匹配5次
(19|([2]\d)) + \d{2}
19 |2+(0-9)+ (0-9)随机匹配2次
((0[1-9])|((10|11|12)) +[0-2] [1-9]|10|20|30|31)
0(1-9)月|10|11|12月+(0-2)(1-9)|10|20|30|31日
\d{3} + (\d|x|X)
0-9匹配3次 + 0-9|x|X匹配一次

3.如何用正则匹配手机号

在中国通常第二位是345789

1[3|4|5|7|8|9]\d{9}
  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值