验证用户名,支持中英文(包括全角字符)、数字、下划线和减号 (全角及汉字算两位),长度为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。
162 1
输入一个字符,判断该字符是大写字母、小写字母,数字还是其他字符,并作相应的显示。
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
270 0
正则表达式去除空格、符号,只保留中文、英文、数字
正则表达式去除空格、符号,只保留中文、英文、数字
812 0
7-8 字符串字母大小写转换 (15 分)
7-8 字符串字母大小写转换 (15 分)
306 0
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数
301 0
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
(JAVA编程练习):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
589 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
335 0
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。