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

openjweb快速开发平台字段校验器与正则表达式

阅读更多

openjweb平台除了原来的非空,唯一校验外,增加了邮件格式校验器,手机格式校验器,居民身份证校验器,除此之外,增加了正则表达式校验器,正则表达式校验器的增加,实现了为任一表字段配置正则表达式校验,这样开发人员不需要在java代码中编写校验代码,只需要在表字段属性中设置正则表达式,下面是openjweb平台从表字段设置中读正则表达式的代码,读到正则表达式后,使用Pattern.compile进行解析:

package org.openjweb.core.validator;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.log4j.Logger;
import org.openjweb.core.entity.AbstractEntity;
import org.openjweb.core.service.IDBSupportService;
import org.openjweb.core.service.ServiceLocator;

/**
* 自定义正则表达式校验器
* @author王保政
*
*/
public class PatternValidator implements IValidator
{
private static final Logger logger = Logger.getLogger(PatternValidator.class);
public String validate(AbstractEntity entity, String fieldName, String langId, boolean isResourceTag, String dbService) throws Exception
{
// TODO Auto-generated method stub

//从数据库表中取出对应的表和字段定义,如果定义了正则表达式字段非空,则使用正则表达式校验
String clsName = entity.getClass().getName();
String sPattern ="";
String sReturn = "";
String value = "";
IDBSupportService service = (IDBSupportService)ServiceLocator.getBean(dbService);
logger.info("自定义正则表达式sql:");
logger.info("select pattern_value from comm_column_def where table_serial_no in (select serial_no from comm_table_def where cls_name='"+clsName+"' and cls_field_name='"+fieldName+"'");
Object obj = service.getJdbcTemplate().queryForObject("select pattern_value from comm_column_def where table_serial_no in (select serial_no from comm_table_def where cls_name='"+clsName+"' and cls_field_name='"+fieldName+"')", String.class);
if(obj!=null)
{
sPattern = obj.toString().trim();
logger.info("查出的正则表达式:"+sPattern);
Pattern pattern = Pattern.compile(sPattern);
try
{
value = entity.getFieldValueByName(fieldName).toString();//唯一校验一般为字符串类型
}
catch(Exception ex)
{
//
}
if(value!=null && value.trim().length()>0)
{
Matcher matcher = pattern.matcher(value);
if (matcher.matches())
{
sReturn = "";
}
else
{
sReturn ="字段["+fieldName+"]不符合正则表达式"+sPattern+",请更改!";
}

}


}
return sReturn ;
}

}

另外,也可以实现读取Groovy动态语言脚本进行字段校验,不过由于正则表达式过于强大,似乎不必要再开发Groovy的校验规则.在平台中通过绑定正则表达式及其他校验器,这样项目开发中在修改字段校验时,不需要再更改jsp或java代码.附字段校验器选择页面:

在项目开发中,我们需要收集很多校验器,包括中文姓名校验,邮编,电话号码,等等,其实我们可以设计一个正则表达式的表,来存储各种正则表达式供字段校验使用.

作者QQ:29803446

Msn:baozhengw999@hotmail.com

email:baozhengw@163.com

本平台诚征销售代理

分享到:
评论

相关推荐

    正则表达式在数据库查询中的应用

    教你如何将正则表达式使用在SQL查询中,工作中经常需要,因为用正则表达式查询能更准确的查询出匹配的信息,学Oracle必须要懂得知识点

    Java使用正则表达式提取XML节点内容的方法示例

    主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下

    精通 JavaScript正则表达式

    正则表达式可以: •测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证 •替换文本。可以在文档中使用一个正则表达式...

    正则表达式中需要转移的字符

    正则表达式中需要转移的字符,列举了在写正则表达式时需要转义的字符

    logstash grok(正则表达式)提取日志信息

    logstash grok 添加了自定义的正则表达式,可以提取出日志的等级,日志的时间,日志的线程号

    java-SAX解析XML、java正则表达式.

    1、java SAX方式的XML解析 和 Myeclipse工程源码 2、java 正则表达式详解和常用例子

    正则表达式

    我们已经发现了,在正则表达式中所有的字母字符和数字都是按照字面意思与自身相匹配的.JavaScript的正则表达式还通过以反斜杠(\)开头的转义序列支持某些非 字母字符.例如,序列 "\n" 在字符串中匹配的是一个直接量换...

    最常用,最全面的js正则表达式

    经典js正则表达式介绍,最完整的实例说明,最全面,涵盖所有的常用页面字段校验。

    运用正则表达式匹配所有表名

    在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 写出匹配SQL语句中的所有表名,备忘记录 折磨了好久,正则表达式如下: 代码如下: \*\s+from\s+[\w\[\]]*\.?[\w\[\]]*\.?\[?(\b\w+...

    网址正则表达式匹配方法

    网址正则表达式匹配,javascript

    JavaScript正则表达式详解

    简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。其作用如下: 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为...

    正则表达式从入门到精通

    使用正则表达式,就可以: •测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。... 使用正则表达式,就可以:  •...

    30min快速查询学习正则表达式

    30min快速查询学习正则表达式 详细介绍了正则表达式各个字段的意义,开发时可以查询以求帮助

    Spider-Java正则表达式的学习

    正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则...

    asp.net常用的正则表达式字段

    asp.net常用的正则表达式字段

    Python爬虫教程之利用正则表达式匹配网页内容

    前言 Python爬虫,除了使用...简单来说,就是给定了一个字符串,在字符串中找到想要的字符串,如一个电话号码,一个IP地址,一个字段,在爬虫过程中,如果灵活使用正则表达式,将极大地提升爬虫效率。 正则表达式

    nginx的正则表达式,logstash用

    nginx的正则表达式,logstash用。grok是一种采用组合多个预定义的正则表达式,用来匹配分割文本并映射到关键字的工具。通常用来对日志数据进行预处理。

    c# 使用正则表达式去除字符串中用双引号括起来的千分位号。

    通过使用正则表达式,方便的提取出字符串中用双引号括起来的数字字段,并去掉其千分位号,也可用来去除一对双引号。可以借助贪婪模式,进行最小匹配。 string teststr="2323,232323,fff,\"344,34,734\",34365,65656,...

    正则表达式调试工具

    正则表达式的调试工具,一款用来寻找网页某字段的调试工具

Global site tag (gtag.js) - Google Analytics