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

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

public class UserVerifyUtil {

/**
 * 验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为4-20位,中文按二位计数
 *
 * @param userName
 * @return
 * @author www.sangedabuliu.com
 */
public static boolean UserCountUtil(String userName) {
    String validateStr = "^[\\w\\--_[0-9]\u4e00-\u9fa5\uFF21-\uFF3A\uFF41-\uFF5A]+$";
    boolean rs = false;
    rs = matcher(validateStr, userName);
    if (rs) {
        int strLenth = getStrLength(userName);
        if (strLenth < 4 || strLenth > 20) {
            rs = false;
        }
    }
    return rs;
}

private static boolean matcher(String reg, String string) {
    boolean tem = false;
    Pattern pattern = Pattern.compile(reg);
    Matcher matcher = pattern.matcher(string);
    tem = matcher.matches();
    return tem;
}

/**
 * 获取字符串的长度,对双字符(包括汉字)按两位计数
 *
 * @param value
 * @return
 */
public static int getStrLength(String value) {
    int valueLength = 0;
    String chinese = "[\u0391-\uFFE5]";
    for (int i = 0; i < value.length(); i++) {
        String temp = value.substring(i, i + 1);
        if (temp.matches(chinese)) {
            valueLength += 2;
        } else {
            valueLength += 1;
        }
    }
    return valueLength;
}

/**
 * 是否是手机号
 *
 * @param phone
 * @return
 */
public static boolean isPhone(String phone) {
    if (StringUtil.isBlank(phone)) {
        return false;
    }
    String regex = "^1\\d{10}$";
    if (phone.length() == 11) {
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(phone);
        return m.matches();
    }
    return false;
}

}

相关文章
|
6月前
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
84 1
输入一个字符判断是数字还是字母 如果是字母是大写字母还是小写字母 是声母还是韵母
|
6月前
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。 提示:利用ord()函数来获得字符的 ASCIl。
163 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
270 0
正则表达式去除空格、符号,只保留中文、英文、数字
正则表达式去除空格、符号,只保留中文、英文、数字
814 0
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
590 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
335 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
|
Unix C++
C++:统计字符串内大小写字母,数字空格,逗号等
C++:统计字符串内大小写字母,数字空格,逗号等
413 0
|
测试技术
汉字数字转阿拉伯数字
# 问题来源 # 这个问题,是看到有人提到带中文数字的章节标题,要排序的问题引起的。比如对于: ```python title_list = [ '第一章', '第三章', '第五章', '第四章', '第二章', ] ``` 想“正确”排序的话,你直接 ``title_list.sort()`` 是不行地: ```bash zys@tower:~$ py
781 0
正则 8-18位长度,数字,字母,字符 任意两种,不含中文测试通过
原文:正则 8-18位长度,数字,字母,字符 任意两种,不含中文测试通过 String regex = "^(?!^(\\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\\w~!@#$%^&*?]{8...
1192 0