`
cjc
  • 浏览: 683307 次
  • 性别: 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

本平台诚征销售代理

分享到:
评论

相关推荐

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

    这些工具可以帮助开发者快速测试和生成正则表达式,从而提高开发效率。 四、Java正则表达式技巧大全 在Java中,正则表达式是一种非常有用的技术,它可以帮助开发者快速匹配和提取字符串中的内容。但是,正则表达式...

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

    ### 正则表达式在数据库查询中的...通过合理利用正则表达式的功能,可以极大地提高数据库管理和应用程序开发的效率。然而,在使用正则表达式时也需要考虑到潜在的性能和安全问题,确保其在实际应用中的有效性和可靠性。

    jq非空验证,js正则表达式验证邮箱和手机号码

    在本案例中,我们关注的是使用jQuery(jq)进行非空验证,以及使用JavaScript(js)的正则表达式来验证邮箱和手机号码的正确性。以下是关于这些知识点的详细说明: 1. **jQuery(jq)非空验证**: jQuery是一种轻...

    邮箱及密码的正则表达式验证(C#)

    在正则表达式中,我们可以用以下规则来匹配这个格式: ```csharp public static readonly string EmailRegex = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"; ``` 这个正则表达式包含以下部分: - `...

    Lucene 使用正则表达式

    它接受一个`Term`对象作为参数,该对象包含待匹配字段名和正则表达式。通过这种方式,可以在索引文档中查找符合特定模式的记录。 #### 示例代码解析 1. **索引创建**: ```java IndexWriter writer = new ...

    常用正则表达式HTML,JAVA合集

    这个合集提供的HTML和Java正则表达式实例,为开发者提供了一个快速参考的工具,帮助他们在开发过程中快速有效地实现数据验证功能。理解并熟练运用这些正则表达式,对于提高代码质量和用户体验都有极大的帮助。在实际...

    Jmeter正则表达式提取器

    《Jmeter正则表达式提取器的深度解析与应用》 在软件测试和性能测试领域,Apache JMeter 是一款广泛使用的开源工具,尤其在接口测试和Web应用性能测试中扮演着重要角色。其中,正则表达式提取器是Jmeter中的一个...

    验证控件与正则表达式

    在编程和Web开发中,验证控件和正则表达式是两个非常重要的概念,它们主要用于确保用户输入的数据符合预设的格式和规则。本节我们将深入探讨这两个主题,并结合实际应用来理解它们如何协同工作。 首先,让我们了解...

    grep、sed、awk、perl等对正则表达式的支持的差别

    2. **sed**:流编辑器(Stream Editor)sed支持基本和扩展正则表达式,它可以在读取文件或管道输入时进行实时编辑。sed不仅可以查找匹配的行,还可以替换、删除、插入文本,甚至可以执行循环和条件语句,功能相对...

    用正则表达式提取SQL

    在IT领域,正则表达式(Regular Expression)是一种强大的文本处理工具,它能快速地匹配、查找、替换或者提取符合特定模式的字符串。在本例中,其应用场景可能是分析日志、源代码,或者自动化数据处理等,目的是从...

    VB正则表达式简介

    正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。 使用正则表达式可以:测试字符串的某个模式,例如,可以对一个输入字符串进行测试,看在该字符串中是否存在一个电话号码模式或一个信用卡号码模式。这...

    正则表达式列举 代码 项目中直接使用

    正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、替换等操作,在软件开发、数据处理、网络爬虫等领域有着广泛的应用。在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的...

    JS的正则表达式进行验证

    在IT领域,特别是Web开发中,正则表达式(Regular Expression)是一种强大的文本处理工具,被广泛应用于数据验证、搜索和替换等场景。在JavaScript(JS)中,正则表达式同样发挥着不可或缺的作用,尤其是在用户输入...

    Swing 与正则表达式

    ### Swing 与正则表达式的应用 在Java的GUI编程中,Swing 是一个非常重要的库,它提供了构建用户界面的组件集。正则表达式则是一种强大的文本处理工具,可以用于模式匹配、查找替换等操作。将Swing与正则表达式结合...

    最全的常用正则表达式大全

    #### 一、校验数字的正则表达式 **1.1 数字** - **表达式:** `^[0-9]*$` - **解释:** 匹配任意数量(包括0个)的数字。 - **应用场景:** 用于验证输入是否全为数字。 **1.2 n位的数字** - **表达式:** `^\d{n}$` -...

    Extjs 提示和正则表达式

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换或提取字符串模式。...理解并熟练运用正则表达式,对于开发高质量的Web应用程序至关重要。

    jsp正则表达式使用详解

    jsp中正则表达式使用详解 jsp中正则表达式是一种强有力的工具,用于模式匹配和替换。其作用包括:测试字符串的...jsp中正则表达式使用详解可以帮助我们更好地理解和使用正则表达式,提高我们的开发效率和工作质量。

    正则表达式验证表单

    在网页开发与数据处理中,正则表达式是一种非常重要的工具,它被广泛应用于各种验证逻辑中,比如表单验证、数据格式检查等。下面将根据提供的代码示例,详细介绍如何使用JavaScript中的正则表达式来实现常见表单字段...

    正则表达式在oracle中的应用

    ### 正则表达式在Oracle中的应用 #### 引言 在现代软件开发过程中,数据库查询是一项基础且频繁的操作。为了提升查询效率和准确性,正则表达式作为一种强大的模式匹配工具被广泛应用于数据库查询中。传统的SQL语句...

Global site tag (gtag.js) - Google Analytics