`
hui_jing_880210
  • 浏览: 42778 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 服务器端校验

    博客分类:
  • java
阅读更多
import java.util.Collection;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

/**
 * Java表单验证工具类
 * @author zhouguohui
 */public class RegexUtil {

    public static void main(String[] args) {
//        System.out.println("过滤中英文特殊字符: "+RegexUtil.stringFilter("中国~~!#$%%."));
//        System.out.println("是否包含中英文特殊字符: "+RegexUtil.isContainsSpecialChar("12"));
//        System.out.println("过滤html代码: "+RegexUtil.htmltoText("<JAVASCRIPT>12</JAVASCRIPT>DDDDD"));
//        System.out.println("判断中文字符: "+RegexUtil.isChineseChar("中国!"));
//        System.out.println("匹配汉字: "+RegexUtil.isChinese("中国!"));
//        System.out.println("判断英文字符: "+RegexUtil.isEnglish("abc!"));
//        System.out.println("判断合法字符: "+RegexUtil.isRightfulString("abc_-11AAA"));
//        System.out.println("邮政编码验证: "+RegexUtil.isZipCode("162406"));
//        System.out.println("身份证号码验证: "+RegexUtil.isIdCardNo("35052419880210133e"));
//        System.out.println("手机号码验证: "+RegexUtil.isMobile("18918611111"));
//        System.out.println("电话号码验证: "+RegexUtil.isPhone("8889333"));
//        System.out.println("电话号码验证: "+RegexUtil.isNumeric("888.9333"));
//        System.out.println("匹配密码: "+RegexUtil.isPwd("d888d_ddddd"));
//        System.out.println("匹配密码: "+RegexUtil.isUrl("http://baidu.com"));
//        System.out.println("验证字符: "+RegexUtil.stringCheck("中文aabc001_-"));
//        System.out.println(isEmail("416501600@qq.com"));
        //http://baidu.com www.baidu.com baidu.com
//        System.out.println(NumberUtils.toInt("-0000000002"));
    }
    
    public final static boolean isNull(Object[] objs){
        if(objs==null||objs.length==0) return true;
        return false;
    }
    
    public final static boolean isNull(Integer integer){
        if(integer==null||integer==0) return true;
        return false;
    }
    
    public final static boolean isNull(Collection collection){
        if(collection==null||collection.size()==0) return true;
        return false;
    }
    
    public final static boolean isNull(Map map){
        if(map==null||map.size()==0) return true;
        return false;
    }
    
    public final static boolean isNull(String str){
        return str == null || "".equals(str.trim()) || "null".equals(str.toLowerCase());
    }
    
    
    public final static boolean isNull(Long longs){
        if(longs==null||longs==0) return true;
        return false;
    }
    
    public final static boolean isNotNull(Long longs){
        return !isNull(longs);
    }
    
    public final static boolean isNotNull(String str){
        return !isNull(str);
    }
    
    public final static boolean isNotNull(Collection collection){
        return !isNull(collection);
    }
    
    public final static boolean isNotNull(Map map){
        return !isNull(map);
    }
    
    public final static boolean isNotNull(Integer integer){
        return !isNull(integer);
    }
    
    public final static boolean isNotNull(Object[] objs){
        return !isNull(objs);
    }
    
    /**
     * 匹配URL地址
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isUrl(String str) {
        return match(str, "^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$");
    }
    
    /**
     * 匹配密码,以字母开头,长度在6-12之间,只能包含字符、数字和下划线。
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isPwd(String str) {
        return match(str, "^[a-zA-Z]\\w{6,12}$");
    }
    
    /**
     * 验证字符,只能包含中文、英文、数字、下划线等字符。
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean stringCheck(String str) {
        return match(str, "^[a-zA-Z0-9\u4e00-\u9fa5-_]+$");
    }
    
    /**
     * 匹配Email地址
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isEmail(String str) {
        return match(str, "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    }
    
    /**
     * 匹配非负整数(正整数+0)
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isInteger(String str) {
        return match(str, "^[+]?\\d+$");
    }
    
    /**
     * 判断数值类型,包括整数和浮点数
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isNumeric(String str) { 
        if(isFloat(str) || isInteger(str)) return true;
        return false;
    }
    
    /**
     * 只能输入数字
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isDigits(String str) {
        return match(str, "^[0-9]*$");
    }
    
    /**
     * 匹配正浮点数
     * 
     * @param str
     * @return
     * @author jiqinlin
     */
    public final static boolean isFloat(String str) {
        return match(str, "^[-\\+]?\\d+(\\.\\d+)?$");
    }
    
    /**
     * 联系电话(手机/电话皆可)验证   
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isTel(String text){
        if(isMobile(text)||isPhone(text)) return true;
        return false;
    }
    
    /**
     * 电话号码验证  
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isPhone(String text){
        return match(text, "^(\\d{3,4}-?)?\\d{7,9}$");
    }
    
    /**
     * 手机号码验证   
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isMobile(String text){
        if(text.length()!=11) return false;
        return match(text, "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$");
    }
    
    /**
     * 身份证号码验证 
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isIdCardNo(String text){
        return match(text, "^(\\d{6})()?(\\d{4})(\\d{2})(\\d{2})(\\d{3})(\\w)$");
    }
    
    /**
     * 邮政编码验证 
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isZipCode(String text){
        return match(text, "^[0-9]{6}$");
    }
    
    /**
     * 判断整数num是否等于0
     * 
     * @param num
     * @return
     * @author jiqinlin
     */
    public final static boolean isIntEqZero(int num){ 
         return num==0;
    }
    
    /**
     * 判断整数num是否大于0
     * 
     * @param num
     * @return
     * @author jiqinlin
     */
    public final static boolean isIntGtZero(int num){ 
         return num>0;
    }
    
    /**
     * 判断整数num是否大于或等于0
     * 
     * @param num
     * @return
     * @author jiqinlin
     */
    public final static boolean isIntGteZero(int num){ 
        return num>=0;
    }
    
    /**
     * 判断浮点数num是否等于0
     * 
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    public final static boolean isFloatEqZero(float num){ 
         return num==0f;
    }
    
    /**
     * 判断浮点数num是否大于0
     * 
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    public final static boolean isFloatGtZero(float num){ 
         return num>0f;
    }
    
    /**
     * 判断浮点数num是否大于或等于0
     * 
     * @param num 浮点数
     * @return
     * @author jiqinlin
     */
    public final static boolean isFloatGteZero(float num){ 
        return num>=0f;
    }
    
    /**
     * 判断是否为合法字符(a-zA-Z0-9-_)
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isRightfulString(String text){
        return match(text, "^[A-Za-z0-9_-]+$"); 
    }
    
    /**
     * 判断英文字符(a-zA-Z)
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isEnglish(String text){
        return match(text, "^[A-Za-z]+$"); 
    }
    
    /**
     * 判断中文字符(包括汉字和符号)
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isChineseChar(String text){
        return match(text, "^[\u0391-\uFFE5]+$");
    }
    
    /**
     * 匹配汉字
     * 
     * @param text
     * @return
     * @author jiqinlin
     */
    public final static boolean isChinese(String text){
        return match(text, "^[\u4e00-\u9fa5]+$");
    }
    
    /**
     * 是否包含中英文特殊字符,除英文"-_"字符外
     * 
     * @param str
     * @return
     */
    public static boolean isContainsSpecialChar(String text) {
        if(StringUtils.isBlank(text)) return false;
        String[] chars={"[","`","~","!","@","#","$","%","^","&","*","(",")","+","=","|","{","}","'",
                ":",";","'",",","[","]",".","<",">","/","?","~","!","@","#","¥","%","…","&","*","(",")",
                "—","+","|","{","}","【","】","‘",";",":","”","“","’","。",",","、","?","]"};
        for(String ch : chars){
            if(text.contains(ch)) return true;
        }
        return false;
    }
    
    /**
     * 过滤中英文特殊字符,除英文"-_"字符外
     * 
     * @param text
     * @return
     */
    public static String stringFilter(String text) {
        String regExpr="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";  
        Pattern p = Pattern.compile(regExpr);
        Matcher m = p.matcher(text);
        return m.replaceAll("").trim();     
    }
    
    /**
     * 过滤html代码
     * 
     * @param inputString 含html标签的字符串
     * @return
     */
    public static String htmlFilter(String inputString) {
        String htmlStr = inputString; // 含html标签的字符串
        String textStr = "";
        java.util.regex.Pattern p_script;
        java.util.regex.Matcher m_script;
        java.util.regex.Pattern p_style;
        java.util.regex.Matcher m_style;
        java.util.regex.Pattern p_html;
        java.util.regex.Matcher m_html;
        java.util.regex.Pattern p_ba;
        java.util.regex.Matcher m_ba;

        try {
            String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
            // }
            String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>
            // }
            String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
            String patternStr = "\\s+";

            p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
            m_script = p_script.matcher(htmlStr);
            htmlStr = m_script.replaceAll(""); // 过滤script标签

            p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);
            m_style = p_style.matcher(htmlStr);
            htmlStr = m_style.replaceAll(""); // 过滤style标签

            p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
            m_html = p_html.matcher(htmlStr);
            htmlStr = m_html.replaceAll(""); // 过滤html标签

            p_ba = Pattern.compile(patternStr, Pattern.CASE_INSENSITIVE);
            m_ba = p_ba.matcher(htmlStr);
            htmlStr = m_ba.replaceAll(""); // 过滤空格

            textStr = htmlStr;

        } catch (Exception e) {
            System.err.println("Html2Text: " + e.getMessage());
        }
        return textStr;// 返回文本字符串
    }
    
    /**
     * 正则表达式匹配
     * 
     * @param text 待匹配的文本
     * @param reg 正则表达式
     * @return
     * @author jiqinlin
     */
    private final static boolean match(String text, String reg) {
        if (StringUtils.isBlank(text) || StringUtils.isBlank(reg))
            return false;
        return Pattern.compile(reg).matcher(text).matches();
    }
    
    

// 参考地址:http://www.cnblogs.com/yansheng/archive/2010/05/07/1730188.html    

// 附 : 常用的正则表达式:
//    匹配特定数字:
//    ^[1-9]d*$    //匹配正整数
//    ^-[1-9]d*$   //匹配负整数
//    ^-?[1-9]d*$   //匹配整数
//    ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)
//    ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)
//    ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数
//    ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数
//    ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数
//    ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)
//    ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)
//    评注:处理大量数据时有用,具体应用时注意修正
//
//    匹配特定字符串:
//    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
//    ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
//    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
//    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
//    ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串
//
//    在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
//
//    只能输入数字:“^[0-9]*$”
//    只能输入n位的数字:“^d{n}$”
//    只能输入至少n位数字:“^d{n,}$”
//    只能输入m-n位的数字:“^d{m,n}$”
//    只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”
//    只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”
//    只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”
//    只能输入非零的正整数:“^+?[1-9][0-9]*$”
//    只能输入非零的负整数:“^-[1-9][0-9]*$”
//    只能输入长度为3的字符:“^.{3}$”
//    只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”
//    只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”
//    只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”
//    只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”
//    只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”
//    验证用户密码:“^[a-zA-Z]\\w{5,17}$”正确格式为:以字母开头,长度在6-18之间,
//
//    只能包含字符、数字和下划线。
//    验证是否含有^%&’,;=?$”等字符:“[^%&’,;=?$x22]+”
//    只能输入汉字:“^[u4e00-u9fa5],{0,}$”
//    验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”
//    验证InternetURL:“^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$”
//    验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
//
//    正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
//
//    “XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。
//    验证身份证号(15位或18位数字):“^d{15}|d{}18$”
//    验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”
//    验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$” 正确格式为:“01”“09”和“1”“31”。
//
//    匹配中文字符的正则表达式: [u4e00-u9fa5]
//    匹配双字节字符(包括汉字在内):[^x00-xff]
//    匹配空行的正则表达式:n[s| ]*r
//    匹配HTML标记的正则表达式:/< (.*)>.*|< (.*) />/
//    匹配首尾空格的正则表达式:(^s*)|(s*$)
//    匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
//    匹配网址URL的正则表达式:^http://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?$
}

 

 

分享到:
评论

相关推荐

    struts2实现服务器端校验示例

    在这个"struts2实现服务器端校验示例"中,我们将探讨如何在Struts2中实现高效的服务器端数据校验,并结合Dojo实现类似AJAX的实时验证。 首先,Struts2的校验框架是基于Action类的,每个Action类都可以关联一个或多...

    Java服务器端处理程序

    在IT行业中,Java服务器端处理程序是构建网络应用的关键组件,尤其在文件传输场景中扮演着重要角色。本文将深入探讨Java如何实现服务器端处理,包括启动服务器、处理客户端连接以及一对多的并发处理。 首先,Java...

    JAVA UDPSocket代码

    在Java编程语言中,UDP(User ...服务器端不断监听5000端口,接收客户端发送的数据并回应,客户端则向服务器发送消息并接收回应。在实际应用中,可能需要处理更复杂的情况,例如多线程接收、错误处理、数据解析等。

    服务器端表单验证 filter

    服务器端表单验证是验证过程中的关键环节,因为它提供了一道坚实的防线,避免了仅依赖客户端验证可能带来的漏洞。本篇文章将深入探讨如何使用`Filter`进行服务器端表单验证,以及`JavaBean`在此过程中的作用。 首先...

    冒险岛服务器端源代码

    在网络游戏开发中,服务器端通常采用C++或Java等高效语言编写,以保证处理大量并发连接的能力。MapleStoryServer可能就是冒险岛服务器的主程序名,包含了服务器的入口点和核心模块。这些模块可能包括用户认证、游戏...

    java QQ 聊天 源代码 服务器端 客户端

    1. **Java编程语言**: Java是一种广泛使用的面向对象的编程语言,具有跨平台的特性,这使得Java成为开发服务器端和客户端应用的理想选择。在QQ聊天项目中,Java的类库和API被用来创建程序结构和处理网络通信。 2. *...

    ExtJs的服务器端控件实现

    在ExtJS中,虽然主要是前端框架,但通过Ajax技术,我们可以与各种服务器端平台(如Java, .NET, PHP等)进行通信,实现服务器端控件的功能。 1. **Ajax通信**:ExtJS 使用Ajax进行异步请求,通过Ext.Ajax对象或者...

    Java Socket PC端传输文件简易服务器客户端

    服务器端通过创建ServerSocket并指定一个端口号,进入监听状态,等待客户端的连接。 3. **文件输入/输出流(FileInputStream/F FileOutputStream)**: - 在文件传输过程中,Java的I/O流是关键。文件输入流用于...

    基于Java的Web应用程序中数据校验的实现.pdf

    二是在服务器端校验,在执行对数据的任何操作之前,使用应用服务器支持的技术来完成校验。 在客户端数据校验中,可以使用JavaScript来实现。在JSP页面中,可以使用JavaScript来检查所有请求的域,如果不符合要求就...

    服务器端的JSON

    在服务器端,JSON的应用非常广泛,尤其在Web服务和前后端数据交互中扮演着核心角色。 在服务器端,JSON主要用于数据传输,因为它结构清晰,易于读写,并且被大多数编程语言支持。例如,在服务器上,我们可能使用PHP...

    实验一:基于java socket使用tcp udp进行简易控制台命令与文件传输(附简单的实验报告)

    2) 基于Java Socket TCP和UDP实现一个简易的网络文件服务程序,包含服务器端FileServer和客户端FileClient; 3) 服务器端启动时需传递root目录参数,并校验该目录是否有效; 。。。。。。附带简单的实验报告,只需...

    Java中的简单客户端和服务器端验证框架

    在Java开发中,客户端和服务器端验证是必不可少的步骤,以确保数据的准确性和安全性。本文将深入探讨一个基于XML的简单验证框架,该框架在Java J2EE和JavaSE环境中广泛适用,与Struts等MVC框架兼容,并提供有效的...

    基于java的网络聊天室---服务器端毕业设计.doc

    【基于Java的网络聊天室——服务器端毕业设计】 1.1 背景及意义 在信息化社会,网络通信已经成为日常生活中不可或缺的一部分,为人们提供了实时的信息交换平台。例如,QQ作为一款广为人知的聊天工具,利用网络通信...

    socket聊天软件 服务器端

    Socket聊天软件服务器端是基于Java编程语言开发的一款实用通信工具,它利用了Socket编程来实现客户端与服务器之间的实时交互。Socket在计算机网络中扮演着重要角色,它是TCP/IP协议族的一部分,提供了进程间的网络...

    Java上传图片客户端与服务端

    在Java编程环境中,实现一个图片上传功能涉及到客户端和服务器端的交互,这通常通过网络通信协议如Socket来完成。下面将详细阐述这个过程中的关键知识点。 1. **Java Socket编程**: Java Socket是TCP/IP协议的...

    页面输入校验

    服务器端校验通常在后台处理,使用各种编程语言(如Java、Python、PHP等)实现。 5. **数据格式校验**:除了特定类型的校验,还需要检查一般的数据格式,如长度、格式(日期、货币等)和非空验证。这些规则确保了...

    服务器端返回json数据

    在服务器端编程中,JSON因其简洁、高效的特点,常用于数据传输,尤其是在Java EE环境中,如Tomcat服务器。 服务器端返回JSON数据的过程通常涉及以下步骤: 1. **数据准备**:在服务器端,如Java EE应用中,开发者...

    struts2笔记之校验表单信息

    本篇笔记将详细讲解Struts2中服务器端与客户端对表单数据的校验方式。 首先,Struts2提供了一系列内置的校验器,包括: 1. Irequired:检查字段是否为空,是必填项。 2. IIrequiredstring:验证字段是否为非空字符...

    表单校验&文件下载

    表单校验可以在客户端(如JavaScript)和服务器端(如Java、PHP等)进行,或者两者结合。MyEclipse作为一款强大的Java集成开发环境,支持创建和调试包含表单校验功能的Web应用程序。 其次,我们谈谈“文件下载”。...

Global site tag (gtag.js) - Google Analytics