- 浏览: 140427 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
jonesmillera:
Good article! Thank you for sha ...
好用的dao(spring+jpa) -
Luob.:
里面一个类都没有,有反应才怪呢
多文件上传组件SWFUpload java环境小例子 -
seaie:
谢谢博主的分享。
下载测试了下,跑起来ok,不过有3个可改进 ...
java图片压缩处理 支持gif -
angangJonny:
没法反应怎么解决的啊!
多文件上传组件SWFUpload java环境小例子 -
nookiehuihui:
点上传没反应,什么情况
多文件上传组件SWFUpload java环境小例子
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。
如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 .
类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 apache网站下下载
在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧.
这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了):
1.匹配图象; 2 匹配email地址; 3 匹配匹配并提取url ; 4 匹配并提取http ;
5.匹配日期 6 匹配电话; 7 匹配身份证 8 匹配邮编代码
9. 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号< 反斜杠\ 即空格,制表符,回车符等
10 匹配非负整数(正整数 + 0) 11 匹配不包括零的非负整数(正整数 > 0)
12 匹配正整数 13 匹配非正整数(负整数 + 0)
14 匹配负整数; 15. 匹配整数 ;
16 匹配非负浮点数(正浮点数 + 0) 17. 匹配正浮点数
18 匹配非正浮点数(负浮点数 + 0) 19 匹配负浮点数;
20 .匹配浮点数; 21. 匹配由26个英文字母组成的字符串;
22. 匹配由26个英文字母的大写组成的字符串 23 匹配由26个英文字母的小写组成的字符串
24 匹配由数字和26个英文字母组成的字符串; 25 匹配由数字、26个英文字母或者下划线组成的字符串;
- package com.ygj.util;
- import java.util.*;
- import org.apache.oro.text.regex.*;
- /**
-
* 类简介: 使用正则表达式验证数据或提取数据,类中的方法全为静态的
* 主要方法:1. isHardRegexpValidate(String source, String regexp) -
区分大小写敏感的正规表达式批配
- * 2. isSoftRegexpValidate(String source, String regexp)
- * 不区分大小写的正规表达式批配
- * 3. getHardRegexpMatchResult(String source, String regexp)
- * 返回许要的批配结果集(大小写敏感的正规表达式批配)
- * 4. getSoftRegexpMatchResult(String source, String regexp)
- * 返回许要的批配结果集(不区分大小写的正规表达式批配)
- * 5 getHardRegexpArray(String source, String regexp)
- * 返回许要的批配结果集(大小写敏感的正规表达式批配)
- * 6. getSoftRegexpMatchResult(String source, String regexp)
- * 返回许要的批配结果集(不区分大小写的正规表达式批配)
- * 7. getBetweenSeparatorStr(final String originStr,final char leftSeparator,final char rightSeparator)
- * 得到指定分隔符中间的字符串的集合
- *
- * @mail wuzhi2000@hotmail.com
- * @author ygj
- *
- */
- public final class Regexp
- {
- /** 保放有四组对应分隔符 */
- static final Set SEPARATOR_SET=new TreeSet();
- {
- SEPARATOR_SET.add("(");
- SEPARATOR_SET.add(")");
- SEPARATOR_SET.add("[");
- SEPARATOR_SET.add("]");
- SEPARATOR_SET.add("{");
- SEPARATOR_SET.add("}");
- SEPARATOR_SET.add("<");
- SEPARATOR_SET.add(">");
- }
- /** 存放各种正规表达式(以key->value的形式) */
- public static HashMap regexpHash = new HashMap();
- /** 存放各种正规表达式(以key->value的形式) */
- public static List matchingResultList = new ArrayList();
- private Regexp()
- {
- }
- /**
- * 返回 Regexp 实例
- * @return
- */
- public static Regexp getInstance()
- {
- return new Regexp();
- }
- /**
-
* 匹配图象
- *
- * 格式: /相对路径/文件名.后缀 (后缀为gif,dmp,png)
- *
-
* 匹配 : /forum/head_icon/admini2005111_ff.gif 或 admini2005111.dmp
- *
- * 不匹配: c:/admins4512.gif
- *
- */
- public static final String icon_regexp = "^(/{0,1}\\w){1,}\\.(gif|dmp|png|jpg)$|^\\w{1,}\\.(gif|dmp|png|jpg)$";
- /**
-
* 匹配email地址
- *
- * 格式: XXX@XXX.XXX.XX
- *
-
* 匹配 : foo@bar.com 或 foobar@foobar.com.au
- *
- * 不匹配: foo@bar 或 $$$@bar.com
- *
- */
- public static final String email_regexp = "(?:\\w[-._\\w]*\\w@\\w[-._\\w]*\\w\\.\\w{2,3}$)";
- /**
-
* 匹配匹配并提取url
- *
- * 格式: XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX
- *
-
* 匹配 : http://www.suncer.com 或news://www
- *
- * 提取(MatchResult matchResult=matcher.getMatch()):
- * matchResult.group(0)= http://www.suncer.com:8080/index.html?login=true
- * matchResult.group(1) = http
- * matchResult.group(2) = www.suncer.com
- * matchResult.group(3) = :8080
- * matchResult.group(4) = /index.html?login=true
- *
- * 不匹配: c:\window
- *
- */
- public static final String url_regexp = "(\\w+)://([^/:]+)(:\\d*)?([^#\\s]*)";
- /**
-
* 匹配并提取http
- *
- * 格式: http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX 或 ftp://XXX.XXX.XXX 或 https://XXX
- *
-
* 匹配 : http://www.suncer.com:8080/index.html?login=true
- *
- * 提取(MatchResult matchResult=matcher.getMatch()):
- * matchResult.group(0)= http://www.suncer.com:8080/index.html?login=true
- * matchResult.group(1) = http
- * matchResult.group(2) = www.suncer.com
- * matchResult.group(3) = :8080
- * matchResult.group(4) = /index.html?login=true
- *
- * 不匹配: news://www
- *
- */
- public static final String http_regexp = "(http|https|ftp)://([^/:]+)(:\\d*)?([^#\\s]*)";
- /**
-
* 匹配日期
- *
-
* 格式(首位不为0): XXXX-XX-XX 或 XXXX XX XX 或 XXXX-X-X
- *
-
* 范围:1900--2099
- *
-
* 匹配 : 2005-04-04
- *
- * 不匹配: 01-01-01
- *
- */
- public static final String date_regexp = "^((((19){1}|(20){1})d{2})|d{2})[-\\s]{1}[01]{1}d{1}[-\\s]{1}[0-3]{1}d{1}$";// 匹配日期
- /**
-
* 匹配电话
- *
-
* 格式为: 0XXX-XXXXXX(10-13位首位必须为0) 或0XXX XXXXXXX(10-13位首位必须为0) 或
- * (0XXX)XXXXXXXX(11-14位首位必须为0) 或 XXXXXXXX(6-8位首位不为0) 或
-
* XXXXXXXXXXX(11位首位不为0)
- *
- * 匹配 : 0371-123456 或 (0371)1234567 或 (0371)12345678 或 010-123456 或
-
* 010-12345678 或 12345678912
- *
- * 不匹配: 1111-134355 或 0123456789
- *
- */
- public static final String phone_regexp = "^(?:0[0-9]{2,3}[-\\s]{1}|\\(0[0-9]{2,4}\\))[0-9]{6,8}$|^[1-9]{1}[0-9]{5,7}$|^[1-9]{1}[0-9]{10}$";
- /**
-
* 匹配身份证
- *
- * 格式为: XXXXXXXXXX(10位) 或 XXXXXXXXXXXXX(13位) 或 XXXXXXXXXXXXXXX(15位) 或
-
* XXXXXXXXXXXXXXXXXX(18位)
- *
-
* 匹配 : 0123456789123
- *
- * 不匹配: 0123456
- *
- */
- public static final String ID_card_regexp = "^\\d{10}|\\d{13}|\\d{15}|\\d{18}$";
- /**
-
* 匹配邮编代码
- *
-
* 格式为: XXXXXX(6位)
- *
-
* 匹配 : 012345
- *
- * 不匹配: 0123456
- *
- */
- public static final String ZIP_regexp = "^[0-9]{6}$";// 匹配邮编代码
- /**
-
* 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号< 反斜杠\ 即空格,制表符,回车符等 )
- *
-
* 格式为: x 或 一个一上的字符
- *
-
* 匹配 : 012345
- *
- * 不匹配: 0123456
- *
- */
- public static final String non_special_char_regexp = "^[^'\"\\;,:-<>\\s].+$";// 匹配邮编代码
- /**
- * 匹配非负整数(正整数 + 0)
- */
- public static final String non_negative_integers_regexp = "^\\d+$";
- /**
- * 匹配不包括零的非负整数(正整数 > 0)
- */
- public static final String non_zero_negative_integers_regexp = "^[1-9]+\\d*$";
- /**
- *
- * 匹配正整数
- *
- */
- public static final String positive_integer_regexp = "^[0-9]*[1-9][0-9]*$";
- /**
- *
- * 匹配非正整数(负整数 + 0)
- *
- */
- public static final String non_positive_integers_regexp = "^((-\\d+)|(0+))$";
- /**
- *
- * 匹配负整数
- *
- */
- public static final String negative_integers_regexp = "^-[0-9]*[1-9][0-9]*$";
- /**
- *
- * 匹配整数
- *
- */
- public static final String integer_regexp = "^-?\\d+$";
- /**
- *
- * 匹配非负浮点数(正浮点数 + 0)
- *
- */
- public static final String non_negative_rational_numbers_regexp = "^\\d+(\\.\\d+)?$";
- /**
- *
- * 匹配正浮点数
- *
- */
- public static final String positive_rational_numbers_regexp = "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$";
- /**
- *
- * 匹配非正浮点数(负浮点数 + 0)
- *
- */
- public static final String non_positive_rational_numbers_regexp = "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$";
- /**
- *
- * 匹配负浮点数
- *
- */
- public static final String negative_rational_numbers_regexp = "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$";
- /**
- *
- * 匹配浮点数
- *
- */
- public static final String rational_numbers_regexp = "^(-?\\d+)(\\.\\d+)?$";
- /**
- *
- * 匹配由26个英文字母组成的字符串
- *
- */
- public static final String letter_regexp = "^[A-Za-z]+$";
- /**
- *
- * 匹配由26个英文字母的大写组成的字符串
- *
- */
- public static final String upward_letter_regexp = "^[A-Z]+$";
- /**
- *
- * 匹配由26个英文字母的小写组成的字符串
- *
- */
- public static final String lower_letter_regexp = "^[a-z]+$";
- /**
- *
- * 匹配由数字和26个英文字母组成的字符串
- *
- */
- public static final String letter_number_regexp = "^[A-Za-z0-9]+$";
- /**
- *
- * 匹配由数字、26个英文字母或者下划线组成的字符串
- *
- */
- public static final String letter_number_underline_regexp = "^\\w+$";
- /**
- * 添加正规表达式 (以key->value的形式存储)
- *
- * @param regexpName
- * 该正规表达式名称 `
- * @param regexp
- * 该正规表达式内容
- */
- public void putRegexpHash(String regexpName, String regexp)
- {
- regexpHash.put(regexpName, regexp);
- }
- /**
- * 得到正规表达式内容 (通过key名提取出value[正规表达式内容])
- *
- * @param regexpName
- * 正规表达式名称
- *
- * @return 正规表达式内容
- */
- public String getRegexpHash(String regexpName)
- {
- if (regexpHash.get(regexpName) != null)
- {
- return ((String) regexpHash.get(regexpName));
- }
- else
- {
- System.out.println("在regexpHash中没有此正规表达式");
- return "";
- }
- }
- /**
- * 清除正规表达式存放单元
- */
- public void clearRegexpHash()
- {
- regexpHash.clear();
- return;
- }
- /**
- * 大小写敏感的正规表达式批配
- *
- * @param source
- * 批配的源字符串
- *
- * @param regexp
- * 批配的正规表达式
- *
- * @return 如果源字符串符合要求返回真,否则返回假 如: Regexp.isHardRegexpValidate("ygj@suncer.com.cn",email_regexp) 返回真
- */
- public static boolean isHardRegexpValidate(String source, String regexp)
- {
- try
- {
- // 用于定义正规表达式对象模板类型
- PatternCompiler compiler = new Perl5Compiler();
- // 正规表达式比较批配对象
- PatternMatcher matcher = new Perl5Matcher();
- // 实例大小大小写敏感的正规表达式模板
- Pattern hardPattern = compiler.compile(regexp);
- // 返回批配结果
- return matcher.contains(source, hardPattern);
- }
- catch (MalformedPatternException e)
- {
- e.printStackTrace();
- }
- return false;
- }
发表评论
-
网页划词自动翻译的实现
2009-11-04 15:32 1933其中机器翻译调用的Google API,将以下代码另存为即可看 ... -
92个流行网络广告代码(JS或flash)演示+下载
2009-10-29 13:46 990http://www.itlea.com/demo/jsad/ ... -
43个热门Flex和ActionScript 3.0 APIs,技巧和工具
2009-09-24 11:31 997http://www.iteye.com/wiki/fle ... -
jspSmartUpload的用法
2009-09-01 09:57 196013.2 jspSmartUpload组件中 ... -
HibernateTemplate的使用
2009-08-07 10:00 1253一、find(String queryString); ... -
HibernateTemplate类使用
2009-08-07 09:55 3937/** * 向数据库添加一条对应于一个业务对象实例的记录 ... -
jpa查询
2009-07-27 11:45 5808JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自 ... -
javaScript
2009-07-27 10:44 11271. oncontextmenu="window.e ... -
一个session监听器
2009-07-24 10:50 1286import java.util.HashMap; impo ... -
封装XMLHttpRequest
2009-07-23 17:03 1113xmlhttp.js function send_reque ...
相关推荐
一个java正规表达式工具类 关键字: 一个java正规表达式工具类 猛然想起两年写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴...
详解java正规表达式工具类 感觉很不错,学习与工作都有帮助
分享一个java的正规表达式的java工具类,有用到的欢迎下载使用。类中用到了 jakarta-oro-2.0.jar 包,这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的...
类中的方法全为静态的在这里,我将这个类定义成了一个单例,(本来只有static方法是不new去对象的,也就用不到单例了)是因为有一个 regexpHash(HashMap实例),为了可以动态添加正规表达式,不知道是不是想的太多了:) ...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
5.4.3 一个含多态函数的语言 5.4.4 代换、实例和合一 5.4.5 多态函数的类型检查 5.5 类型表达式的等价 5.5.1 类型表达式的结构等价 5.5.2 类型表达式的名字等价 5.5.3 记录类型 5.5.4 类型表示中的环 5.6 函数...
5.4.3 一个含多态函数的语言 5.4.4 代换、实例和合 5.4.5 多态函数的类型检查 5.5 类型表达式的等价 5.5.1 类型表达式的结构等价 5.5.2 类型表达式的名字等价 5.5.3 记录类型 5.5.4 类型表示中的环 ...
/* 你能看得出来,这不是一篇正规的技术文章,所以若你不小心从里边读到了一个爱情故事,可不要奇怪。有很多人用程序来表述爱情,在其中我能看到有Money,有Girl,有一些还涉及到Sex,但是我没有找到Love,我始终相信...
3.3.1 引用最后一个元素 40 3.3.2 序列的范围 41 3.3.3 通过附加序列增长列表 41 3.3.4 使用列表临时存储数据 42 3.3.5 处理集合 43 3.4 本章小结 44 3.5 习题 44 第Ⅱ部分 Python语言和标准库 第4章 做出决策 49 ...