代码下载地址:http://www.zuidaima.com/share/1550463222516736.htm
转载请注明出处:验证用户名长度的正则表达式
运行此代码截图如下:
满足此表达式:
不满足此表达式:
- packagecom.zuidaima.regularexpression;
- importjava.util.regex.Matcher;
- importjava.util.regex.Pattern;
- publicclassUserReg{
- /**
- *验证用户名,支持中英文(包括全角字符)、数字、下划线和减号(全角及汉字算两位),长度为4-20位,中文按二位计数
- *
- *@paramuserName
- *@return
- */
- staticbooleanvalidateUserName(StringuserName){
- StringvalidateStr="^[\\w\\--_[0-9]\u4e00-\u9fa5\uFF21-\uFF3A\uFF41-\uFF5A]+$";
- booleanrs=false;
- rs=matcher(validateStr,userName);
- if(rs){
- intstrLenth=getStrLength(userName);
- if(strLenth<4||strLenth>20){
- rs=false;
- }
- }
- returnrs;
- /**
- *获取字符串的长度,对双字符(包括汉字)按两位计数
- *
- *@paramvalue
- *@return
- */
- intgetStrLength(Stringvalue){
- intvalueLength=0;
- Stringchinese="[\u0391-\uFFE5]";
- for(inti=0;i<value.length();i++){
- Stringtemp=value.substring(i,i+1);
- if(temp.matches(chinese)){
- valueLength+=2;
- }else{
- 1;
- returnvalueLength;
- privatebooleanmatcher(Stringreg,Stringstring){
- booleantem= Patternpattern=Pattern.compile(reg);
- Matchermatcher=pattern.matcher(string);
- tem=matcher.matches();
- returntem;
- voidmain(String[]args){
- Stringstr="0-_f9zd中22最代码zuidaima.com";
- Stringst="A-dq_!!!!去符号标号!ノチセたのひちぬ!当然。!!..**半角最代码zuidaima.com";
- System.out.println(validateUserName(str));
- System.out.println(st.replaceAll("[\\pP&&[^-_]]",""));
- System.out.println(st.replaceAll("[\\w\\-一-龥A-Za-z]",""));
- }