Java常用工具类之RegexpUtils,正则表达式工具类

package com.test.core.util;

import org.apache.log4j.Logger;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
import org.apache.oro.text.regex.PatternCompiler;
import org.apache.oro.text.regex.PatternMatcher;
import org.apache.oro.text.regex.Perl5Compiler;
import org.apache.oro.text.regex.Perl5Matcher;

public final class RegexpUtils {

    private static Logger log = Logger.getLogger(RegexpUtils.class);

    private RegexpUtils() {
    }

    /**
     * 匹配图象
     *
     *
     * 格式: /相对路径/文件名.后缀 (后缀为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地址
     *
     *
     * 格式: [email protected]
     *
     * 匹配 : [email protected] 或 [email protected]
     *
     * 不匹配: [email protected] 或 [email protected]
     *
     */
    public static final String EMAIL_REGEXP = "(?://w[-._//w]*//[email protected]//w[-._//w]*//w//.//w{2,3}$)";

    /**
     * 匹配匹配并提取url
     *
     *
     * 格式: XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX
     *
     * 匹配 : http://www.suncer.com 或news://www
     *
     * 不匹配: 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
     *
     * 不匹配: news://www
     *
     */
    public static final String HTTP_REGEXP = "(http|https|ftp)://([^/:]+)(://d*)?([^#//s]*)";

    /**
     * 匹配日期
     *
     *
     * 格式(首位不为0): XXXX-XX-XX或 XXXX-X-X
     *
     *
     * 范围:1900--2099
     *
     *
     * 匹配 : 2005-04-04
     *
     *
     * 不匹配: 01-01-01
     *
     */
    public static final String DATE_BARS_REGEXP = "^((((19){1}|(20){1})\\d{2})|\\d{2})-[0,1]?\\d{1}-[0-3]?\\d{1}$";  

    /**
     * 匹配日期
     *
     *
     * 格式: XXXX/XX/XX
     *
     *
     * 范围:
     *
     *
     * 匹配 : 2005/04/04
     *
     *
     * 不匹配: 01/01/01
     *
     */
    public static final String DATE_SLASH_REGEXP = "^[0-9]{4}/(((0[13578]|(10|12))/(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)/(0[1-9]|[1-2][0-9]|30)))$";

    /**
     * 匹配电话
     *
     *
     * 格式为: 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 // ;,:-<>//s].+$";//
     */
    public static final String NON_SPECIAL_CHAR_REGEXP = "^[^‘/";
    // 匹配邮编代码

    /**
     * 匹配非负整数(正整数 + 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+$";

    /**
     * 大小写敏感的正规表达式批配
     *
     * @param source
     *            批配的源字符串
     * @param regexp
     *            批配的正规表达式
     * @return 如果源字符串符合要求返回真,否则返回假
     */
    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) {
            log.warn(e);
        }

        return false;
    }

}

原文地址:https://www.cnblogs.com/jiangwz/p/8297169.html

时间: 2024-11-02 19:31:06

Java常用工具类之RegexpUtils,正则表达式工具类的相关文章

(转)介绍几个C#正则表达式工具

推荐三个C#正则表达式工具,理由如下 第一个C#正则表达式工具,REGEX 这个C#正则表达式工具优点是中文的,提供了一些示例 第二个C#正则表达式工具,REGEXBUDDY 这是一个真正专业的REGEX生产工具,应该说,他是不错的REGEX开发工具,提供了完美的REGEX表达式生产环境 语法高亮以元件的形式插入各种正则表达式元素 支持以库的形式收集管理正则表达式 支持测试和分隔 支持各种预定义的各种语言中正则表达式函数的生成(很牛) 第三个叫做The Regulator,这个工具是用C#做的

Java 常用API(二)

目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar类 5. System类 6. StringBuilder类 String类的原理 StringBuilder类的原理 StringBuilder的构造方法 StringBuilder的常用方法 7. 包装类 概述 装箱与拆箱(以 int 类型为例) 自动装箱与自动拆箱 基本类型与字符串类型之间的相

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证

java常用工具类(java技术交流群57388149)

package com.itjh.javaUtil; import java.util.ArrayList; import java.util.List; /** * * String工具类. <br> * * @author 宋立君 * @date 2014年06月24日 */ public class StringUtil { private static final int INDEX_NOT_FOUND = -1; private static final String EMPTY =

Java常用工具类集合

数据库连接工具类 仅仅获得连接对象 ConnDB.java package com.util; import java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = null; private static final String DRIVER_NAME = "com.mysql

28个Java常用的工具类

源码下载:http://pan.baidu.com/s/1pJLSczD Base64.javaBase64DecodingException.javaCConst.javaCharTools.javaConfigHelper.javaCounter.javaCTool.javaDateHandler.javaDateUtil.javaDealString.javaDebugOut.javaDom4jHelper.javaEscape.javaExecHelper.javaFileHelper.

java常用工具类(三)—— Excel 操作工具

import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; i

java常用的工具类

一.数组作为常用的数据结构,jdk在Arrays工具类中提供了很多有用的算法,并且根据不同的基本数据类型都有相应的重载,这里只列举名称. 接口 功能 说明 asList 将数组转换为List binarySearch 二分查找 入参必须有序,可以找到返回值>=0,否则返回小于0的值,不一定是-1 copyOf 从源数组进行复制 会截断或者扩充 copyOfRange 从源数据进行范围复制 deepEquals 多维数组的等值判断 deepHashCode 多维数组的哈希值 deepToStrin

项目经验分享——Java常用工具类集合 转

http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类——仅仅获得连接对象 ConnDB.java [java] package com.util; import java.sql.Connection; import java.sql.DriverM

[转]Java常用工具类集合

转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.util; import java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = nu