正则表达式主要是用来处理字符串,更加准确的说是处理字符的
基础知识:
?出现0或1次
+至少出现1次
* 出现0次或是多次
[]表示出现其中的一个或者多个
{n,m}最少出现n次,最多出现m次
\\d 表示出现的数字 \\D出现的不是数字
\\s表示空白字符,包括空格,换行,制表符,回车等 \\S相反
\\w a-z A-Z 0-9 表示常规字符 \\W相反
\\. 表示出现单个任意字符
单个的知识点并不难,但是组合起来使用就有点复杂了,多多练习。
主要作用
1.字符串匹配
2.字符串的替换操作
3.字符串的抽取
1.字符串的匹配操作
- IP的匹配操作
192.168.0.27 最简单的正则表达式的匹配 \\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} 每一位上都可能出现1-3个数字,但是没有限制数字最大为255,超过255则匹配不成功。
\\d 表示数字 ,{n,m}表示最少出现n次,最大出现m次。
稍微改进一点的IP匹配正则表达式为:[1-2]?\\d{0,2}\\.[1-2]?\\d{0,2}\\.[1-2]?\\d{0,2}\\.[1-2]?\\d{0,2}。
还有更好的,自己可以思考完成。
- 身份证匹配
身份证现在分老式的15位 和新式的18位,18位身份证有可能最后一位是X,所以这个比较简单一些 \ \d{15}||\\d{18}||\\d{17}[Xx]
更好的验证就是提取出出生日期,限制一些年限。从19XX--2XXX年 \\d{6}[12][90]\\d{7} ||\\d{6}[12][90]\\d{10} ||\\d{6}[12][90]\\d{9}[Xx]
- 电子邮件匹配
/*
*fangjiewd@126.com
*fangjie_wd@game.com
*fangjie.wd@edu.com.cn
*/
[\\w+\\.-]*\\w+@[\\d+\\.\\w]*\\w+\\.\\w{2,6}
但是在@前必须出现一个或者多个字符\\w+ ,这样之后如果出现像这种情况fangjie.wd.@...则就不能匹配成功
在@之后可以出现字符或者是数字或者是组合,使用 [\\d+\\.\\w]*做限制
- 数字的匹配
\\d+这种情况只能匹配像 12,33333,88整数情况,但对于小数则匹配不成功。
改进:\\d+\\.?\\d+ 这种情况则就能匹配整数也能匹配小数,因此可能判断一个字符串是否为数字
- 日期匹配
匹配2014-12-21 这种形式的日期:\\d{4}-\\d{1,2}-\\d{1,2},其他形式的也类似,可以仿照写