java正则表达式终极总结(简单又好用)

一.介绍:

正则表达式在java.util.regex里面,具体的各种用法可以查找api手册

二. 常用格式

其中:^表示以此正则表达式开始 $是以此正则表达式结尾

 1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
 2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
 3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
 4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
 5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
 6 国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
 7 身份证号
       15或18位身份证:^\d{15}|\d{18}$
       15位身份证:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$

 8 中国邮政编码:[1-9]\d{5}(?!\d)    (中国邮政编码为6位数字)
  9 IP地址:\d+\.\d+\.\d+\.\d+    (提取IP地址时有用)

三、校验字符的表达式

 1 汉字:^[\u4e00-\u9fa5]{0,}$
 2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
 3 长度为3-20的所有字符:^.{3,20}$
 4 由26个英文字母组成的字符串:^[A-Za-z]+$
 5 由26个大写英文字母组成的字符串:^[A-Z]+$
 6 由26个小写英文字母组成的字符串:^[a-z]+$
 7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
 8 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
 9 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+
12 禁止输入含有~的字符:[^~\x22]+

四.特殊用法

1.替换文档里面某个字符串

String str="张三和王四是中国人"

String regex2="[(张三)(王四)]";//一个*代替一个字

         String regex3="(张三)";//一个字代替一个括号里面的内容

         String str2=str.replaceAll(regex2,"*");

         System.out.println(str2);

         String str3=str.replaceAll(regex3,"*");

2.分组替换,如替换手机号的中间四位

idCard.replaceAll("(\\d{4})\\d{10}(\\w{4})","$1*****$2");
4304*****7733

$1、$2、……表示正则表达式里面第一个、第二个、……括号

但是 对应括号内的内容不替换

2. 查找比如超找英文作文中单个字符的单词

使用 Pattern Matcher

String str4="gello hh jjjnihao good  god dog mmm";

         Pattern a=Pattern.compile("\\b[a-zA-Z]{3}\\b");

         Matcher m=a.matcher(str4);

         while (m.find()) {

                   System.out.println(m.group());

         }

         }

 



你可能感兴趣的:(java知识库)