免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1971 | 回复: 0

java验证用户名长度的正则表达式使用 [复制链接]

论坛徽章:
0
发表于 2015-07-07 11:09 |显示全部楼层
用户名可能包含中文,中文按2位算
源码下载地址:http://www.zuidaima.com/share/1550463222516736.htm

验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
  1. package com.zuidaima.regularexpression;

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

  4. public class UserReg {
  5.     /**
  6.      * 验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
  7.      * @author www.zuidaima.com
  8.      * @param userName
  9.      * @return
  10.      */
  11.     public static boolean validateUserName(String userName) {
  12.         String validateStr = "^[\\w\\--_[0-9]\u4e00-\u9fa5\uFF21-\uFF3A\uFF41-\uFF5A]+$";
  13.         boolean rs = false;
  14.         rs = matcher(validateStr, userName);
  15.         if (rs) {
  16.             int strLenth = getStrLength(userName);
  17.             if (strLenth < 4 || strLenth > 20) {
  18.                 rs = false;
  19.             }
  20.         }
  21.         return rs;
  22.     }

  23.     /**
  24.      * 获取字符串的长度,对双字符(包括汉字)按两位计数
  25.      *
  26.      * @param value
  27.      * @return
  28.      */
  29.     public static int getStrLength(String value) {
  30.         int valueLength = 0;
  31.         String chinese = "[\u0391-\uFFE5]";
  32.         for (int i = 0; i < value.length(); i++) {
  33.             String temp = value.substring(i, i + 1);
  34.             if (temp.matches(chinese)) {
  35.                 valueLength += 2;
  36.             } else {
  37.                 valueLength += 1;
  38.             }
  39.         }
  40.         return valueLength;
  41.     }

  42.     private static boolean matcher(String reg, String string) {
  43.         boolean tem = false;
  44.         Pattern pattern = Pattern.compile(reg);
  45.         Matcher matcher = pattern.matcher(string);
  46.         tem = matcher.matches();
  47.         return tem;
  48.     }

  49.     public static void main(String[] args) {
  50.         String str = "0-_f9zd中22";
  51.         String st = "A-dq_!!!!去符号标号!ノチセたのひちぬ!当然。!!..**半角";

  52.         System.out.println(validateUserName(str));
  53.         System.out.println(st.replaceAll("[\\pP&&[^-_]]", ""));
  54.         System.out.println(st.replaceAll("[\\w\\-一-龥A-Za-z]", ""));
  55.     }
  56. }

  57.                     
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP