java中使用正则表达式校验的一个例子
2016-07-26 17:32
537 查看
英文 - 有特殊含义,注意如果匹配—使用中文符号
java中使用正则表达式校验的一个例子
再加一个检验0.01-99.99之间小数的,且不允许以个位值非0而十分为0,也不允许小数以0结尾
连个特殊的点
必须包含数字和字母-不可以全部为数字或者字母,长度6-12
正则表达式的工具类和测试类
测试类
在web项目中对实体增加校验-@Validated http://blog.csdn.net/u012373815/article/details/72049796
TestModel 是入参实体,可以增加 @ModelAttribute("testModel") 注解
如果TestModel是复杂对象,如内部包含List等,需要@RequestBody 注解
TestModel内部
地址属性校验
姓名属性校验
多个联系方式校验
java中使用正则表达式校验的一个例子
@Test public void Zhengzt() { //正则规则 Pattern pattern=Pattern.compile("^[\u0391-\uFFE5a-zA-Z·.。\\s]{0,}+$"); //被校验的字符串 Matcher match=pattern.matcher("hello name"); if(match.matches()){ System.out.println(); } }
再加一个检验0.01-99.99之间小数的,且不允许以个位值非0而十分为0,也不允许小数以0结尾
@Test public void Zhengzt() { //1个数-不允许为0,2个数-不允许0开头,1个数加一个小数/两个小数,两个数加一个小数/两个小数 Pattern pattern=Pattern.compile("" + "(^[1-9]{1}$)|" + "(^[1-9]{1}[0-9]{1}$)|" + "(^[0-9]{1}[.]{1}[0-9]{1,2}$)|" + "(^[1-9]{1}[0-9]{1}[.]{1}[0-9]{1,2}$)"); Pattern pattern2=Pattern.compile("^[0]{1}[.][0]{1,2}$");//0.0和0.00是两个特殊字符 //被校验的字符串 String str="0"; Matcher match=pattern.matcher(str); Matcher match2=pattern2.matcher(str); if((!match.matches())?true:(match2.matches()?true:false)){ //不满足条件 System.out.println("不满足条件"); }else{ System.out.println("满足条件"); } }
连个特殊的点
• 和 ·
必须包含数字和字母-不可以全部为数字或者字母,长度6-12
Pattern pattern=Pattern.compile("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$");
正则表达式的工具类和测试类
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 正则表达式工具类 */ public class PatternAndMatcherUtil { /** * 数字正则检测,长度限定为1-11位 * @return true 合法,false 不合法 */ public static boolean checkInt1to11(String str){ //正则规则 Pattern pattern=Pattern.compile("^[0-9]{1,11}+$"); //被校验的字符串 Matcher match=pattern.matcher(str); return match.matches(); } /** * 姓名正则检测,允许出现 中文、英文、·、• 、空格、长度为1-50 * @param name * @return */ public static boolean checkStringName(String name){ //正则规则 Pattern pattern=Pattern.compile("^[\u0391-\uFFE5a-zA-Z·•\\s]{1,50}+$"); //被校验的字符串 Matcher match=pattern.matcher(name); return match.matches(); } /** * 多个联系方式正则检测,允许 数字、-、+、,(逗号),长度1-50 * @param phones * @return */ public static boolean checkStringPhones(String phones){ //正则规则 Pattern pattern=Pattern.compile("^[0-9-+,]{1,50}+$"); //被校验的字符串 Matcher match=pattern.matcher(phones); return match.matches(); } /** * 地址正则检测,允许任何字符,中文、字母、数字、—、,、·、空格 * 长度1-200 * @return */ public static boolean checkStringAddress1to200(String address){ //正则规则 Pattern pattern=Pattern.compile("^[\u0391-\uFFE5a-zA-Z·•\\s—,,]{1,200}+$"); //被校验的字符串 Matcher match=pattern.matcher(address); return match.matches(); } }
测试类
import org.junit.Test; import cn.acsm.farmeasy.order.core.utils.PatternAndMatcherUtil; import junit.framework.TestCase; /** * Java 正则检验测试 * @author wj * */ public class PatternAndMatcherTest { /** * 数字正则测试,长度1-11 */ @Test public void testCheckInt1to11(){ String str="11111111111"; TestCase.assertEquals("数据非法",true,PatternAndMatcherUtil.checkInt1to11(str)); } /** * 姓名正则测试 */ @Test public void testCheckStringName(){ String name="a 你好·n"; TestCase.assertEquals("数据非法",true,PatternAndMatcherUtil.checkStringName(name)); } /** * 多个联系方式正则测试 */ @Test public void testCheckStringPhones(){ String phones="1,+,-"; TestCase.assertEquals("数据非法",true,PatternAndMatcherUtil.checkStringPhones(phones)); } /** * 地址正则测试 */ @Test public void testCheckStringAddress1to200(){ String address="a-—北京,,"; TestCase.assertEquals("数据非法",true,PatternAndMatcherUtil.checkStringAddress1to200(address)); } }
在web项目中对实体增加校验-@Validated http://blog.csdn.net/u012373815/article/details/72049796
TestModel 是入参实体,可以增加 @ModelAttribute("testModel") 注解
public String addTestModel(@Validated TestModel testModel){
如果TestModel是复杂对象,如内部包含List等,需要@RequestBody 注解
public String addTestModel(@Validated @RequestBody TestModel testModel){
TestModel内部
地址属性校验
@NotEmpty(message="地址不可为空") @Size(min=1,max=200,message="地址长度在1-200") @Pattern(regexp="^[\u0391-\uFFE5a-zA-Z·•\\s—,,]{1,200}+$",message="地址仅限中文、字母、数字、—、,、·、空格") private String address;
姓名属性校验
@NotEmpty(message="收件人姓名不可为空") @Size(min=1,max=50,message="收件人姓名长度在1-50") @Pattern(regexp="^[\u0391-\uFFE5a-zA-Z·•\\s]{1,50}+$",message="姓名仅限中文、字母、·、空格") private String name;
多个联系方式校验
@NotEmpty(message="联系方式不可为空") @Size(min=1,max=50,message="联系方式长度在1-50") @Pattern(regexp="^[0-9-+,]{1,50}+$",message="联系方式长度1-50,仅限数字、-、+、,(逗号)") private String phone;
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- msql 正则表达式
- 正则表达式
- 插入排序
- 冒泡排序