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