java常用正则表达式模板
来源:互联网 发布:淘宝做床垫好做吗 编辑:程序博客网 时间:2024/06/08 11:33
下面是我积累的最常用也说明的最清楚的java正则表达式的编写
并给出了相关的表达式每一段这样写的注释,初学java正则的同学,一定能找到感觉和方向。
在后面我附上了自己调试的正则匹配代码,大家可以参考学习一下
1. 用户名正则表达式模式^[a-z0-9_-]{3,15}$^ # 行开始 [a-z0-9_-] # 匹配列表中的字符,a-z,0–9,下划线,连字符 {3,15} # 长度至少3个字符,最大长度为15$ # 行结束2. 密码正则表达式模式((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})( # 组开始 (?=.*\d) # 必须包含一个数字 0-9 (?=.*[a-z]) # 必须包含一个小写字符 (?=.*[A-Z]) # 必须包含一个大写字符 (?=.*[@#$%]) # 必须包含一个列表中的特殊字符"@#$%" . # 检查所有字符串与前面的条件的匹配 {6,20} # 长度至少为6个字符,最大长度为20) # 组结束3. 16进制颜色代码正则表达式模式^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$^ # 行开始 # # 必须包含一个"#"符号 ( # 组#1开始 [A-Fa-f0-9]{6} # 列表中的任意字符串,长度为6 | # ..或者 [A-Fa-f0-9]{3} # 列表中的任意字符串,长度为3 ) # 组#1结束$ # 行结束4. Email 正则表达式模式^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$^ # 行开始 [_A-Za-z0-9-]+ # 必须以中括号中的字符为起始字符[],必须包含一个或多个(+) ( # 组#1开始 \\.[_A-Za-z0-9-]+ # 接下来是一个点"."和中括号内的字符[],必须包含一个或者多个(+) )* # 组#1结束, 这个组是可选的(*) @ # 必须包含一个"@"符号 [A-Za-z0-9]+ # 接下来是中括号内的字符[],必须包含一个或者多个(+) ( # 组 #2开始 – 一级TLD检查 \\.[A-Za-z0-9]+ # 接下来是一个点"."和中括号内的字符[],必须包含一个或者多个(+) )* # 组#2结束,这个组是可选的(*) ( # 组#3开始 – 二级TLD检查 \\.[A-Za-z]{2,} # 接下来是一个点"."和中括号内的字符[], 最小长度为2 ) # 组#3结束$ # 行结束5. 图像文件扩展名正则表达式模式([^\s]+(\.(?i)(jpg|png|gif|bmp))$)( # 组#1开始 [^\s]+ # 必须包含一个或更多的任意字符(除了空格) ( # 组#2开始 \. # 接下来是一个点"." (?i) # 忽略后边字符的大小写检查 ( # 组#3开始 jpg # 包含字符"jpg" | # ..或者 png # 包含字符"png" | # .. 或者 gif # 包含字符"gif" | # .. 或者 bmp # 包含字符"bmp" ) # 组#3结束 ) # 组#2结束 $ # 字符串的结束) # 组#1结束补充一个:[\\s\\S]*?([^\\/]*?\\.jpg)6. IP地址正则表达式模式^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$^ # 行开始 ( # 组#1开始 [01]?\\d\\d? # 可以是1到2个数字. 如果出现3个数字, 必须以0或者1开始 # 例如 ([0-9], [0-9][0-9],[0-1][0-9][0-9]) | # ...或者 2[0-4]\\d # 以2开始, 紧跟着是0-4,并且以任意数字结尾(2[0-4][0-9]) | # ...或者 25[0-5] # 以2开始, 紧跟着是5,并且以0-5结尾 (25[0-5]) ) # 组#1结束 \. # 接下来是点".".... # 重复3次 (3x)$ # 行结束7. 时间格式正则表达式模式12-小时制时间正则表达式模式(1[012]|[1-9]):[0-5][0-9](\\s)?(?i)(am|pm)( # 组#1开始 1[012] # 以10, 11, 12开始 | # 或者 [1-9] # 以1,2,...9开始) # 组#1结束 : # 接下来是一个冒号 (:) [0-5][0-9] # 接下来是0..5和0..9,意思是00到59 (\\s)? # 接下来是一个空格(可选) (?i) # 下面的检查不区分大小写 (am|pm) # 接下来是AM或者PM24小时制时间正则表达式模式([01]?[0-9]|2[0-3]):[0-5][0-9]( # 组#1开始 [01]?[0-9] # 以0-9,1-9,00-09,10-19开始 | # 或者 2[0-3] # 以20-23开始) # 组#1结束 : # 接下来是一个冒号(:) [0-5][0-9] # 接下来是0..5和0..9,意思是00到598. 日期格式 (dd/mm/yyyy) 正则表达式模式(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])/((19|20)\\d\\d)( # 组#1开始 0?[1-9] # 01-09或者1-9 | # ..或者 [12][0-9] # 10-19或者20-29 | # ..或者 3[01] # 30, 31) # 组#1结束 / # 接下来是一个"/" ( # 组#2开始 0?[1-9] # 01-09或者1-9 | # ..或者 1[012] # 10,11,12 ) # 组#2结束 / # 接下来是一个"/" ( # 组#3开始 (19|20)\\d\\d # 19[0-9][0-9]或者20[0-9][0-9] ) # 组#3结束9. HTML标签正则表达式模式<("[^"]*"|'[^']*'|[^'">])*>< # 以"<"标签开始 ( # 组#1开始 "[^"]*" # 只允许两个双引号成对出现-"string" | # ..或者 '[^']*' # 只允许两个单引号成对出现- 'string' | # ..或者 [^'">] # 不能出现单独的双引号、单引号和">" ) # 组#1结束 * # 0次或多次> # 以结束标签">"结束10. HTML链接正则表达式模式HTML中的A标签正则表达式模式(?i)<a([^>]+)>(.+?)</a>( # 组#1开始 ?i # 所有的检查区分大小写) # 组#1结束<a # 以"<a"开始 ( # 组#2开始 [^>]+ # 除了(">")之外的任意字符,至少一个字符 ) # 组#2结束 > # 接下来是">" (.+?) # 匹配所有 </a> # 以"</a>结束提取HTML链接正则表达式模式\s*(?i)href\s*=\s*(\"([^"]*\")|'[^']*'|([^'">\s]+));\s* # 可以以空格开始 (?i) # 所有的检查是区分大小写的 href # 接下来是一个"href"字 \s*=\s* # 等号两边都允许空格, ( # 组#1开始 "([^"]*") # 只允许2个双引号成对出现 - "string" | # ..或者 '[^']*' # 只允许2个单引号成对出现 - 'string' | # ..或者 ([^'">]+) # 或者不允许出现单独的单引号、双引号和">" ) # 组#1结束
以下是我自定义进行正则测试的代码,里面测试了汉字的字符串的提取,纯数字字符串的提取,IP地址的提取以及日期的提取:
import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by mac on 16/8/29. */public class RegexMatches{ public static void main( String args[] ){ // 按指定模式在字符串查找 String line = "2016-04-18 16:00:00 {\"areacode\":\"浙江省丽水市\",\"countAll\":0,\"countCorrect\":0,\"datatime\":\"4134362\",\"logid\":\"201604181600001184409476\",\"requestinfo\":\"{\\\"sign\\\":\\\"4\\\",\\\"timestamp\\\":\\\"1460966390499\\\",\\\"remark\\\":\\\"4\\\",\\\"subjectPro\\\":\\\"123456\\\",\\\"interfaceUserName\\\":\\\"12345678900987654321\\\",\\\"channelno\\\":\\\"100\\\",\\\"imei\\\":\\\"12345678900987654321\\\",\\\"subjectNum\\\":\\\"13989589062\\\",\\\"imsi\\\":\\\"12345678900987654321\\\",\\\"queryNum\\\":\\\"13989589062\\\"}\",\"requestip\":\"36.16.128.234\",\"requesttime\":\"2016-04-18 16:59:59\",\"requesttype\":\"0\",\"responsecode\":\"010005\",\"responsedata\":\"无查询结果\"}\n"; String pattern1 = "\"areacode\":\"[\\u4e00-\\u9fa5]*" ; //汉字正则表达式 String pattern2 = "\"datatime\":\"[0-9]*" ; //数字正则表达式 String pattern3 = "\\\\\"imei\\\\\":\\\\\"[0-9]*" ; //时间正则表达式 \\\\\"imei\\\\\":\\\\\" String pattern4 = "\"requestip\":\"[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" ; //ip正则表达式 String pattern5 = "\"requesttime\":\"((19|20)\\d\\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([012][0-9]):([0-5][0-9]):([0-5][0-9])" ; //"requesttime":"2016-04-18 16:00:00 //String pattern = "\"areacode\":\"[^0-9a-z]*\","; // 创建 Pattern 对象 Pattern r1 = Pattern.compile(pattern1); Pattern r2 = Pattern.compile(pattern2); Pattern r3 = Pattern.compile(pattern3); Pattern r4 = Pattern.compile(pattern4); Pattern r5 = Pattern.compile(pattern5); // 现在创建 matcher 对象 Matcher m1 = r1.matcher(line); Matcher m2 = r2.matcher(line); Matcher m3 = r3.matcher(line); Matcher m4 = r4.matcher(line); Matcher m5 = r5.matcher(line); if (m1.find( )) { System.out.println("origin string : "+line); System.out.println("Found value: " + m1.group(0) ); //System.out.println("Found value: " + m2.group(0) ); //System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m4.group(0) ); } else { System.out.println("NO MATCH"); } if (m2.find( )) { System.out.println("Found value: " + m2.group(0) ); //System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m4.group(0) ); } else { System.out.println("NO MATCH"); } if (m3.find( )) { System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m4.group(0) ); } else { System.out.println("NO MATCH"); } if (m4.find( )) { System.out.println("Found value: " + m4.group(0) ); //System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m4.group(0) ); } else { System.out.println("NO MATCH"); } if (m5.find( )) { System.out.println("Found value: " + m5.group(0) ); //System.out.println("Found value: " + m3.group(0) ); //System.out.println("Found value: " + m4.group(0) ); } else { System.out.println("NO MATCH"); } }}// val logIdRegex = """"logid":"([0-9]+)",""".r// val imeiRegex = """\\"imei\\":\\"([A-Za-z0-9]+)\\"""".r// val logId = getDataByPattern(logIdRegex, line)// val imei = getDataByPattern(imeiRegex, line)
以下是测试运行的结果:
1 0
- java常用正则表达式模板
- JAVA常用正则表达式
- java 常用正则表达式
- ------JAVA常用正则表达式-------
- java常用正则表达式
- java常用正则表达式
- java常用正则表达式
- Java常用正则表达式
- Java常用正则表达式
- Java常用正则表达式
- java常用正则表达式
- Java常用正则表达式
- Java常用正则表达式!!!!!!!!!!!!!
- java 常用正则表达式
- Java常用正则表达式
- 常用JAVA正则表达式
- java常用正则表达式
- Java 常用正则表达式
- 宣告主权
- 怎么在jsp页面,用js弹出一个新的对话框
- 发布个JQuery的遮罩层实现(mask)
- banner轮播图的实现
- Android Picasso归纳以及谜一般的缓存
- java常用正则表达式模板
- ScopedPtr
- linux文件查找命令 locate
- JSTL标签库简介
- java 中 i=i++ 的解释
- day5_meta和img
- iOS 发虚现象(启动图问题)
- MyEclipse下JavaWeb项目导入IDEA并部署到Tomcat运行
- java基础