最近碰到好几个需要正则表达式校验的地方,无奈学习了的知识已经还回去了。索性记下来,以后可以用。
不说了,开讲渔与鱼。
渔:
什么是正则表达式?
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式的作用?
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
- 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
- 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
- 灵活性、逻辑性和功能性非常的强;
- 可以迅速地用极简单的方式达到字符串的复杂控制。
- 对于刚接触的人来说,比较晦涩难懂。
正则表达式的符号
括号的作用(yes|no)demo,此处匹配yesdemo 或者是nodemo这两种情况。去掉括号yes|nodemo则是匹配yes或者是nodemo
^:表示匹配行首的文本
$:表示匹配行尾的文本
鱼:
常用的正则表达式:
邮箱:
`\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}`
^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
网址:
[a-zA-z]+://[^\s]*
^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+
手机号:
0?(13|14|15|18)[0-9]{9}
电话号:
\d{3}-\d{8}|\d{4}-\{7,8}
[0-9-()()]{7,18}
IP地址:
(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
匹配身份证号:
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
String去除前面/后面的0:
//去掉前面的0
String newStr = str.replaceAll("^0+", "" );
//去掉后面的0
String newStr = str.replaceAll("0+$", "");
Java中的使用
Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("待匹配的字符串");
matcher.matches()//通过匹配为true,反之则为false
最后给大家推荐两个比较好用的正则表达式测试网址: