`
ErHuo
  • 浏览: 21552 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

后台常用正则表达式

阅读更多
/**
 * 
 * @author  : bless<505629625@qq.com>
 * @version : 1.00
 * Create Time : 2011-2-22-下午04:31:36
 * Description : 
 *             内容校验类
 */
public class ValidateUtil implements Serializable{
	private static final long serialVersionUID = 1L;

	/**
	 * 默认编码格式
	 */
	private static final String DEFAULT_ENCODING = "UTF-8";
	
	/**
	 * Function  : 检查字符串的格式
	 * @author   : bless<505629625@qq.com>
	 * @param str           :  被检查的字符串
	 * @param hasCN         :  允许有中文
	 * @param hasNum        : 允许有数字
	 * @param hasLetter     : 允许有字母
	 * @param specialChars  :  允许有特殊字符,输入方式:假设允许下划线则参数为,"_"  假如允许下划线和问号则参数为,"_","?"
	 * example : 字母、数字、问号、句号和感叹号组成的字符串:isRealChar("xxxx",false,true,true,"?","。","!")
	 * @return   匹配则返回true,不匹配返回false
	 */
	public static boolean isRealChar(String str,boolean hasCN,boolean hasNum,boolean hasLetter,String... specialChars){
		String regex_start = "^[";
		String regex_end = "]+$";
		
		if(hasCN == true){
			regex_start = regex_start + "|\u4e00-\u9fa5";
		}else if(hasNum == true){
			regex_start = regex_start + "|0-9";
		}else if(hasLetter == true){
			regex_start = regex_start + "|a-zA-Z";
		}
		if(specialChars != null){
    		for(int i = 0;i<specialChars.length;i++){
    			regex_start = regex_start +"|"+specialChars[i];
    		}
    	}

		return match(regex_start+regex_end,str);
	}

	/**
	 * @param str
	 * @return
	 * author  : bless<505629625@qq.com>
	 * about version :1.00
	 * create time   : 2011-2-22-下午04:37:22
	 * Description : 验证邮箱的有效性
	 *         成功匹配则返回true
	 *         不匹配则返回false           
	 */
    public static boolean isEmail(String str) 
    {
    	//return str.matches("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+") ;
        String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午04:38:38
     * Description :验证IP地址
     *         匹配返回true
     *         不匹配返回false
     */
    public static boolean isIP(String str) 
    { 
        String num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)"; 
        String regex = "^" + num + "\\." + num + "\\." + num + "\\." + num + "$"; 
        return match(regex, str); 
    } 

    /**
     *  
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午04:47:59
     * Description : 校验网址(规则:以http://或https://开头)
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isUrl(String str)
    { 
        String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午04:49:46
     * Description :验证是否是固定电话(规则:xxxx(区号,3或4位)-(连接线,必备)xxxxxx(电话,6到8位),如028-83035137)
     *         匹配则返回true
     *         不匹配则返回false              
     */
    public static boolean isTelephone(String str) 
    { 
        String regex = "^(\\d{3,4}-)?\\d{6,8}$"; 
        return match(regex, str); 
    } 

    /**
     * @param value
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午04:51:00
     * Description : 验证是否是手机号(规则:以1开头,接任意数字,11位)
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isMobilePhone(String value)
    {
    	//String regex = "^[1]+[3,5]+\\d{9}$"; 
    	String regex = "^[1]+\\d{10}"; 
    	return value.matches(regex);
    } 
    
    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:01:02
     * Description :邮编地址
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isPostalcode(String str) 
    { 
        String regex = "^\\d{6}$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:03:46
     * Description :验证15位或18位身份证号
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isIDcard(String str) 
    { 
        String regex = "(^\\d{18}$)|(^\\d{15}$)"; 
        return match(regex, str); 
    } 

    /**
     * @param str     被验证数据
     * @param digit   验证长度:小数点后几位
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:12:03
     * Description : 验证是否符合指定位数的小数
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isDecimal(String str,int digit) 
    { 
        String regex = "^[0-9]+(.[0-9]{"+digit+"})?$"; 
        return match(regex, str); 
    } 

    
    /** 
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:18:49
     * Description :验证是否是1~12月
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isMonth(String str) 
    { 
        String regex = "^(0?[1-9]|1[0-2])$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:22:57
     * Description : 校验日期格式(格式:xxxx-xx-xx,并且考虑闰月、大小月的情况)
     *        匹配则返回true
     *        不匹配则返回false
     */
    public static boolean isDate(String str) 
    { 
        //严格验证时间格式的(匹配[2002-01-31], [1997-04-30], [2004-01-01])不匹配([2002-01-32], [2003-02-29], [04-01-01]) 
    	String regex = "^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"; 
        //没加时间验证的YYYY-MM-DD 
//      String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$"; 
        //加了时间验证的YYYY-MM-DD 00:00:00 
//      String regex = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$"; 
        return match(regex, str); 
    } 

    
    
    /**
     * @param str
     * @param sign  : 三种"+","-","all",分别表示正数、负数、正负都行
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:31:02
     * Description :校验指定类型的数字
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isNumber(String str,String sign) 
    {
    	String regex = "";
    	if("+".equals(sign)){
    		regex = "^[+]?[0-9]*$";
    	}else if("-".equals(sign)){
    		regex = "^[-][0-9]*$";
    	}else{
    		regex = "^[+-]?[0-9]*$";
    	}
        return match(regex, str);
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:36:04
     * Description :验证非0正整数
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isIntNumber(String str)
    { 
        String regex = "^\\+?[1-9][0-9]*$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:38:38
     * Description :验证大写字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isUpChar(String str) 
    { 
        String regex = "^[A-Z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:39:14
     * Description : 验证小写字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isLowChar(String str) 
    { 
        String regex = "^[a-z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:39:57
     * Description :验证输入的是字母
     *         匹配则返回true
     *         不匹配则返回false
     */
    public static boolean isLetter(String str) 
    { 
        String regex = "^[A-Za-z]+$"; 
        return match(regex, str); 
    } 

    /**
     * @param str
     * @param encoding : 编码格式,如GBK,   不输入默认为UTF-8
     * @return :返回指定编码格式下字符串的长度
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午05:54:16
     * Description :选择不同编码,返回字符串长度
     */
    public static int checkLength(String str,String encoding) {
        int length;
        try {
        	if(encoding == null||"".equals(encoding)){
        		length = str.getBytes(DEFAULT_ENCODING).length;
        	}else{
        		length = str.getBytes(encoding).length;
        	}
        } catch (UnsupportedEncodingException e) {
            length = str.getBytes().length;
        }
        return length;
    }
    


    
    /**
     * @param regex
     * @param str
     * @return
     * author  : bless<505629625@qq.com>
     * about version :1.00
     * create time   : 2011-2-22-下午04:41:57
     * Description : 正则表达式验证方法
     *         匹配表达式则返回true
     *         不匹配则返回false
     */
    private static boolean match(String regex, String str)
    { 
        Pattern pattern = Pattern.compile(regex); 
        Matcher matcher = pattern.matcher(str); 
        return matcher.matches(); 
    }
}


分享到:
评论

相关推荐

    PostgreSQL 正则表达式 常用函数的总结

    4. 正则表达式编译与释放:虽然PostgreSQL在后台进行正则表达式的编译和优化,但在某些情况下,了解如何编译和释放正则表达式对于性能优化是有帮助的。 - `regcomp` 和 `regerror` 等函数用于编译和获取正则表达式...

    asp.net正则表达式大全及后台代码使用方法

    ### ASP.NET正则表达式大全及后台代码使用方法 #### 一、正则表达式概述 正则表达式是一种强大的文本处理工具,在ASP.NET开发中非常常见,它可以帮助开发者进行字符串搜索、替换等操作。本文将详细介绍一系列常用的...

    正则表达式 不管是后台、前台页面还是数据库设计,你都可能用到哦

    除了上述的应用场景之外,还有一些常用的正则表达式模式: - **非负整数**:`^\\d+$` - **正整数**:`^[0-9]*[1-9][0-9]*$` - **非正整数**:`^((-\\d+)|(0+))$` - **负整数**:`^-?[0-9]*[1-9][0-9]*$` - **整数**...

    ASP.NET正则表达式应用

    本文将详细介绍一些常用的正则表达式及其在ASP.NET中的应用场景。 #### 二、数字类正则表达式 1. **匹配任何数字:** `^[0-9]*$` - 这个表达式可以匹配任意长度的数字串,包括空串。 2. **匹配确切长度为n的数字...

    asp.net中的正则表达式应用

    ASP.NET中的正则表达式应用主要涉及到网页表单验证,特别是在处理用户输入数据时,确保其格式正确。在这个示例中,我们看到一个程序用于验证电子邮件地址的有效性,并将验证结果展示在Web页面上。这涉及到两个关键...

    jspbook.rar_java md5_java 管理_jsp tomcat_md5_正则表达式

    5. **正则表达式**: 在这个项目中,正则表达式被用于实现管理登录时的验证码功能。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换或验证字符串模式,防止自动机器人或恶意用户通过登录验证。 6. **...

    shell编程指南,shell脚本,本书共分五部分全。grep家族,sed,AWK,正则表达式,tr用法

    第7章 正则表达式介绍 49 第8章 grep家族 56 第9章 AWK介绍 66 第10章 sed 用法介绍 89 第11章 合并与分割 104 第12章 tr用法 119 第三部分 登录环境 第13章 登录环境 125 第14章 环境和shell变量 132 第15章 引号...

    疯狂java培训的sina微博源码

    这个压缩包包含了两个主要部分:一个用于收集和处理常用正则表达式的集合,以及具体的Sina微博源码示例。这些内容旨在帮助开发者提升在Android平台上实现Oauth认证、动画效果和异步处理的技能。 首先,让我们关注...

    js脚本集合有javascript脚本和正则法则

    在后台,JavaScript可能通过Ajax发送异步请求,与服务器交换数据,而这些数据在发送前可能还需要经过正则表达式进行过滤和格式化。 总的来说,"js脚本集合"中的资源对于开发者来说是宝贵的参考资料。它们可以帮助...

    window全盘索引文件

    Windows搜索默认并不支持正则表达式,但通过第三方应用,如Everything或使用PowerShell,我们可以实现正则表达式的搜索功能。例如: 1. Everything是一款小巧快速的搜索工具,它可以即时显示整个硬盘上的文件和...

    PHP正则匹配中英文、数字及下划线的方法【用户名验证】 原创

    在开发实际的用户注册系统时,可以要求用户输入用户名,然后在后台利用类似的正则表达式进行验证。如果匹配成功,即认为输入的用户名是有效的,允许用户继续注册流程;如果匹配失败,则提示用户用户名不符合要求,...

    Android抓取CSDN首页极客头条内容完整实例

    描述还强调了正则表达式对于抓取网页数据的重要性,并提到了如何利用工具如RegexTester进行正则表达式的测试。 正则表达式是文本处理中的一个强大工具,通过使用特殊字符构建模式来匹配特定的字符串。在网页数据...

    第一册随机补充内容1-通配符.pdf

    - `*`:正则表达式中表示匹配任意数量(包括零个)的字符。 - `?`:正则表达式中表示匹配任意单个字符。 - `[]`:正则表达式中用于定义字符集,匹配方括号内的任意字符。 - `{}`:在正则表达式中用于定义重复次数,...

    shell完整教程(带标签)初级到高级

    第三章介绍了如何在Shell中进行后台命令的管理和执行,包括`cron`和`crontab`的使用来安排定期执行的任务、`at`命令的使用以及如何使用`&`、`nohup`命令将任务放到后台运行,这些都是Linux系统管理中常用的功能。...

    DevTools 开发正则计算 js字符 C#字符 生成编译

    "DevTools"是一个强大的开发辅助软件,它提供了多种功能,包括代码转换、文字编码转换、字符转换以及正则表达式工具和MD5加密。以下是对这些核心功能的详细说明: 1. **代码转换**:DevTools支持在不同的编程语言...

    U盘自动复制器 源码

    标题中的“U盘自动复制器源码”是一个用于自动化U盘数据复制的...通过阅读和理解源代码,开发者可以学习到MFC框架的应用、文件操作、后台运行机制以及正则表达式筛选等内容,对提升Windows桌面应用开发技能大有裨益。

    C# 方法大全(更新)

    本节重点介绍了几种常用的正则表达式及其应用场景。 1. **匹配空白行**: ```regex /^\[ \t]*$/ ``` 此表达式用于匹配空白行,即行内只包含空格或制表符的行。 2. **验证ID号码**: ```regex /\d{2}-\d{5}/...

    Linux与unix shell编程指南.rar

    grep家族,sed,AWK,正则表达式,tr用法 第一部分 shell 第1章 文件安全与权限 1 第2章 使用find和xargs 14 第3章 后台执行命令 22 第4章 文件名置换 31 第5章 shell输入与输出 34 第6章 命令执行顺序 46 第二部分 ...

    c#常用通用操作方法类

    常用正则表达式验证 在软件开发中,使用正则表达式来进行数据验证是一种常见且有效的方式。下面列出了一些常用的正则表达式模式: - **电子邮件地址验证**:`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$` ...

    手机卫士_05

    6. **正则表达式语法**:正则表达式在手机卫士中可能用于设置拦截规则或查找特定模式的数据。例如,正则表达式可以用于精确匹配电话号码格式,从而实现更智能的骚扰拦截。学习正则表达式的语法,可以更高效地利用...

Global site tag (gtag.js) - Google Analytics