正则表达式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 正则表达式

正则表达式

 2012/1/3 9:14:43  tigerl  http://tigerl.iteye.com  我要评论(0)
  • 摘要:Java中的正则表达式主要关注2个类java.util.regex包下的Matcher和Pattern,这2个类足以应付大多数的需求,Pattern是想要匹配的表达式,定义好Pattern以后,调用matcher方法,返回一个Matcher类型的值,然后调用find方法,如果返回true则说明匹配到了,否则没有匹配到,写复杂的正则表达式的时候,分组很强大,分组可以看JDK官方API中的Pattern类里有很详细的介绍!其中需要注意的是反斜杠\,如果要匹配一个反斜杠需要用四个反斜杠\\\\来表示
  • 标签:正则表达式 表达式
Java中的正则表达式主要关注2个类java.util.regex包下的Matcher和Pattern,这2个类足以应付大多数的需求,Pattern是想要匹配的表达式,定义好Pattern以后,调用matcher方法,返回一个Matcher类型的值,然后调用find方法,如果返回true则说明匹配到了,否则没有匹配到,写复杂的正则表达式的时候,分组很强大,分组可以看JDK官方API中的Pattern类里有很详细的介绍!

   其中需要注意的是反斜杠\,如果要匹配一个反斜杠需要用四个反斜杠\\\\来表示,因为java首先把4个反斜杠\\\\解析为两个\\,再交给正则表达式,正则表达式再经过一次转换,把两个\\转换成为一个\。

也就是java里面要用正则来表示一个\,必须写成4个\
如果要表示\\,那就要写8个\

1、登录名  长度为1-63,支持中文、字母、数字,字母不区分大小写,不支持空格,不支持下面的特殊字符:‘-’,‘|’,‘#’,‘,’,‘+’,‘“’,‘\’,‘>’,‘<’

,‘;’,‘=’,‘/’,‘?’

2、显示名 长度为1-31,支持 中文、字母、数字,字母不区分大小写,不支持空格,不支持下面的特殊字符:‘?’

3、组描述 长度为1-63,支持中文、字母、数字,字母不区分大小写,不支持空格,不支持下面的特殊字符:‘?’

贴出代码:
package cn.com.linhui;

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

public class RegTest {
	//显示名正则表达式
	public static String username_patternStr = "(\\s+)|([-]+)|([|]+)|([#]+)|([,]+)|([+]+)|([\"]+)|(\\\\+)|([<]+)|([>]+)|([;]+)|([=]+)|([/]+)|([?]+)";
	//登陆名正则表达式
	public static String loginName_patternStr = "([?]+)";
	//组描述正则表达式
	public static String groupDesc_patternStr = "([?]+)";
	
	public static void main(String[] args) {
		try {
			boolean val = validateGroupDesc("中文也有adasf字母也有,_下划线也有*&……%¥#@!特殊字符也有。。。经过验证合法");
			System.out.println(val);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	//验证显示名
	public static boolean validateUserName(String username){
		if(username.length()<1 || username.length()>63){
			throw new IllegalArgumentException("usernmae length too long");
		}
		Pattern pattern = Pattern.compile(username_patternStr,Pattern.CASE_INSENSITIVE);
		Matcher m = pattern.matcher(username);
		if(m.find()){
			//如果能匹配到说明是非法的,抛出一个异常,可以根据需要自定义返回类型
			throw new IllegalArgumentException("Illegal usernmae ["+m.group()+"]");
		}else{
			//否则返回true,表示是合法的,通过验证
			return true;
		}
	}
	
	//验证登陆名
	public static boolean validateLoginName(String loginName){
		if(loginName.length()<1 || loginName.length()>31){
			throw new IllegalArgumentException("loginNmae length too long");
		}
		Pattern pattern = Pattern.compile(loginName_patternStr,Pattern.CASE_INSENSITIVE);
		Matcher m = pattern.matcher(loginName);
		if(m.find()){
			//如果能匹配到说明是非法的,抛出一个异常,可以根据需要自定义返回类型
			throw new IllegalArgumentException("Illegal loginNmae ["+m.group()+"]");
		}else{
			//否则返回true,表示是合法的,通过验证
			return true;
		}
	}
	
	//验证登陆名
	public static boolean validateGroupDesc(String groupDesc){
		if(groupDesc.length()<1 || groupDesc.length()>63){
			throw new IllegalArgumentException("groupDesc length too long");
		}
		Pattern pattern = Pattern.compile(groupDesc_patternStr,Pattern.CASE_INSENSITIVE);
		Matcher m = pattern.matcher(groupDesc);
		if(m.find()){
			//如果能匹配到说明是非法的,抛出一个异常,可以根据需要自定义返回类型
			throw new IllegalArgumentException("Illegal groupDesc ["+m.group()+"]");
		}else{
			//否则返回true,表示是合法的,通过验证
			return true;
		}
	}
}



  • RegTest.zip (1 KB)
  • 下载次数: 1
发表评论
用户名: 匿名