自定义数据校验(4)---demo3---bai

工具类:CharUtil

package com.etc.util;

import java.util.regex.Pattern;

public class CharUtil {

    public static void main(String[] args) {
        String[] strArr = new String[] { "www.micmiu.com", "[email protected]#$%^&*()_+{}[]|\"‘?/:;<>,.", "!¥……()——:;“”‘’《》,。?、", "不要啊", "やめて", "韩佳人", "???" };
        for (String str : strArr) {
            System.out.println("===========> 测试字符串:" + str);
            System.out.println("正则判断结果:" + isChineseByREG(str) + " -- " + isChineseByName(str));
            System.out.println("Unicode判断结果 :" + isChinese(str));
            System.out.println("详细判断列表:");
            char[] ch = str.toCharArray();
            for (int i = 0; i < ch.length; i++) {
                char c = ch[i];
                System.out.println(c + " --> " + (isChinese(c) ? "是" : "否"));
            }
        }
    }

    // 根据Unicode编码完美的判断中文汉字和符号
    private static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
            return true;
        }
        return false;
    }

    // 完整的判断中文汉字和符号
    public static boolean isChinese(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (isChinese(c)) {
                return true;
            }
        }
        return false;
    }

    // 只能判断部分CJK字符(CJK统一汉字)
    public static boolean isChineseByREG(String str) {
        if (str == null) {
            return false;
        }
        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FBF]+");
        return pattern.matcher(str.trim()).find();
    }

    // 只能判断部分CJK字符(CJK统一汉字)
    public static boolean isChineseByName(String str) {
        if (str == null) {
            return false;
        }
        // 大小写不同:\\p 表示包含,\\P 表示不包含
        // \\p{Cn} 的意思为 Unicode 中未被定义字符的编码,\\P{Cn} 就表示 Unicode中已经被定义字符的编码
        String reg = "\\p{InCJK Unified Ideographs}&&\\P{Cn}";
        Pattern pattern = Pattern.compile(reg);
        return pattern.matcher(str.trim()).find();
    }
}

  

MyUsernameValidator

package com.etc.validator;

import com.etc.util.CharUtil;
import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class MyUsernameValidator extends FieldValidatorSupport
{

	//执行校验
	public void validate(Object ctx) throws ValidationException {
		//1  获取输入的字段名
		String  field  = this.getFieldName();
		//2 获取该字段的值
		String value = (String) this.getFieldValue(field,ctx);
		//3 如果含有中文,则报错
		if(CharUtil.isChinese(value))
		{
			this.addFieldError(field, ctx);
		}
	}

}

  

时间: 2024-10-11 16:53:35

自定义数据校验(4)---demo3---bai的相关文章

django 自定义数据校验

http://stackoverflow.com/questions/16231183/django-how-to-override-clean-method-in-a-subclass-of-custom-form 1 class SubClassForm(MyCustomForm): 2 # ... additional form fields here 3 4 def clean(self): 5 # Then call the clean() method of the super cl

dwz数据校验,自定义校验规则增加

之前写数据校验时忘记写dwz里的新增自定义校验,只要找到dwz.min.js文件的  if($.validator){  的位置,在里面写上自己的校验正则表达式即可,我加了两个正则表达式,mac或mms  代码如下 if($.validator){ $.validator.addMethod("alphanumeric",function(value,element){ return this.optional(element)||/^\w+$/i.test(value);},&quo

自己写的基于java Annotation(注解)的数据校验框架

JavaEE6中提供了基于java Annotation(注解)的Bean校验框架,Hibernate也有类似的基于Annotation的数据校验功能,我在工作中,产品也经常需要使 用数据校验,为了方便和重用,自己写了一个简单的基于Annotation的校验框架.有兴趣的可以扩展. 框架说明: AnnotationValidable接口:所有需要使用该校验框架的类都要实现它,该类中没有任何方法需要实现,仅仅是一个表明那些类需要使用该校验框架的标识. GetFiledValue类:是一个工具类,对

数据校验validator 与 DWZ

在做系统时经常会用到数据校验,数据校验可以自己写,也可以用现在成的,现在记录下两种类库使用方法, validator <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="pragma" content="n

SpringMVC数据校验

一.数据校验 在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Java代码进行验证. 为了保证数据的安全性,一般情况下,客户端和服务器端验证都是必须的 二.关键步骤: ①.导入JAR包 SpringMVC支持JSR(Java Specification Result,Java规范提案)303-Bean Validation数据验证规范.而该规范的实现者

SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/

.net 使用validator做数据校验

概述 在把用户输入的数据存储到数据库之前一般都要对数据做服务端校验,于是想到了.net自带的数据校验框架validator.本文对validator的使用方法进行介绍,并分析下校验的的原理. 使用validator校验数据 首先我们创建一个需要校验的实体类代码如下: [Table("apple")] public class Apple { public Guid Id {get;set;} [MaxLength(3,ErrorMessage="名称长度不能超过3个"

Struts2之数据校验

时间:2017-1-11 11:09 --Struts2提供的数据校验 在开发中,请求参数是需要校验的:    客户端:过滤正常用户的错误操作,通过JS代码完成    服务器:Java代码 Struts2提供的校验是服务器端校验. 校验方式分为两种:    1.手动校验(编码校验)    2.配置校验(自动校验,基于Annotation,基于XML) 1.手动校验:    要求:Action类必须继承ActionSupport,需要重写validate()方法(是Validateable接口中的

springmvc--数据转换&amp;数据格式化&amp;数据校验

数据绑定流程如下: 1.springmvc主框架将servletRequest对象及目标方法的实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象 2.DataBinder调用装配在spring mvc上下文中的ConversionService组件进行数据类型转换,格式化工作,将servlet中的请求信息填充到入参对象中 3.调用Validator组件对已经绑定了请求消息的入参对象进行数据合法性校验,并最终生成数据绑定结果BindingData对象 4.s