62,614
社区成员
发帖
与我相关
我的任务
分享
public boolean checkuname(String strname ) // 通过正则表达式验证输入用户名的正确性
{
Pattern pname=Pattern.compile("[^\u4e00-\u9fa5A-Za-z0-9]"); //^[a-zA-Z0-9\u4E00-\u9FA5]+$ 验证中英文数字字符非要这么写搞不懂
Matcher m=pname.matcher("strname");
boolean regxname=m.matches();
if(strname.length()==0)
{ System.out.println("用户名不能为空!");
return false;
} else if(regxname)
{ System.out.println("用户名输入了非法字符"+strname+regxname);
return false;
}else if((strname.length()<2)||(strname.length()>20))
{ System.out.println("用户名长度必须在2个字符到20个字符之间!");
return false;
}else { System.out.println(regxname+" "+strname );
System.out.println("用户名验证成功!");
return true;
}
}
Pattern pname = Pattern.compile("^[a-zA-Z0-9]{2,20}");//这样就是2-20个
public static boolean checkuname(String strname) // 通过正则表达式验证输入用户名的正确性
{
Pattern pname = Pattern.compile("[a-zA-Z0-9]+$"); //这里是大小写字母和数字
Matcher m = pname.matcher(strname);
boolean regxname = m.matches();
System.out.print(strname+" ");
if (strname.length() == 0) {
System.out.println("用户名不能为空!");
return false;
} else if (!regxname) {//这里取反
System.out.println("用户名输入了非法字符");
return false;
} else if ((strname.length() < 2) || (strname.length() > 20)) {
System.out.println("用户名长度必须在2个字符到20个字符之间!");
return false;
} else {
System.out.println("用户名验证成功!");
return true;
}
}
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test{
public static void main(String[] args){
String username = "";
//长度2-20
//不以数字开头
//只能包含中文/英文/数字
String regex = "^(?!\\d)([\u4E00-\u9FA5]|\\w){2,20}$";
Matcher matcher = Pattern.compile(regex).matcher(username);
if(!matcher.matches()){
System.out.printf("username:'%s' is invalid!%n",username);
}else{
System.out.printf("username:'%s' is valid!%n",username);
}
}
}
if(strname.length()==0)
{ System.out.println("用户名不能为空!");
return false;
} else if(regxname)
{ System.out.println("用户名输入了非法字符"+strname+regxname);
return false;
}else if((strname.length()<2)||(strname.length()>20))
{ System.out.println("用户名长度必须在2个字符到20个字符之间!");
return false;
}else { System.out.println(regxname+" "+strname );
System.out.println("用户名验证成功!");
return true;
}
}
2、("[^\u4e00-\u9fa5A-Za-z0-9]")
后面应该有个+号,表示多个数字或者字母。("[^\u4e00-\u9fa5A-Za-z0-9]+")
3、你代码能不能写规范点。。。
public boolean checkuname(String strname ) // 通过正则表达式验证输入用户名的正确性
{
Pattern pname=Pattern.compile("[^\u4e00-\u9fa5A-Za-z0-9]"); //^[a-zA-Z0-9\u4E00-\u9FA5]+$ 验证中英文数字字符非要这么写搞不懂
Matcher m=pname.matcher("strname");//这个怎么能用引号
boolean regxname=m.matches();
if(strname.length()==0)
{ System.out.println("用户名不能为空!");
return false;
} else if(regxname)
{ System.out.println("用户名输入了非法字符"+strname+regxname);
return false;
}else if((strname.length()<2)||(strname.length()>20))
{ System.out.println("用户名长度必须在2个字符到20个字符之间!");
return false;
}else { System.out.println(regxname+" "+strname );
System.out.println("用户名验证成功!");
return true;
}
}
var re = /[^\w\u4e00-\u9fa5]/g
if (re.test(username.value)) {
pusernamemsg.innerHTML = "含有非法字符!";
return false;
javascript的正则表达式这么写没有任何问题 ,我知道java和javascipt下正则的语法区别,在java下这么写[^\\w\u4e00-\u9fa5] 我想应该表示 非A-Za-z0-9以及非中文字符 可就是验证不能通过,我输入了以下几组测试 skyrain skyr&^fds **&^^#$($ 竟然都能通过 最奇怪的是全部为**&^^#$($ 这样的字符 竟然也能验证通过。Pattern pname = Pattern.compile("^[a-zA-Z0-9]+$");
加个^