有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用户id的java正则表达式

我不熟悉正则表达式

我需要使用以下条件编写正则表达式

  • 用户ID不能都是数字
  • 用户ID不能有特殊字符
  • 最小长度为8个字符
  • 最大长度为20个字符
  • 可以按字母顺序排列
  • 可以是字母数字

我写了下面的表达式,但它不起作用

^[a-zA-Z\\d*]{8,20}$

共 (3) 个答案

  1. # 1 楼答案

    尝试使用此代码并检查:

    public static void main(String[] args) {
        Pattern pattern = Pattern.compile("^(?!\\d+$)\\w{8,20}$");
        Matcher matcher = pattern.matcher("Tryurcode4u");
        System.out.println("Input String matches regex - "+matcher.matches());
    }
    
  2. # 2 楼答案

    你可以用这个:

    (?i)^(?=.*[a-z])[a-z0-9]{8,20}$
    

    参见demo了解哪些有效,哪些失败

    • (?i)使其不区分大小写
    • ^断言我们在字符串的开头
    • lookahead检查我们至少有一个字母
    • [a-z0-9]{8,20}匹配8到20个字母或数字(字母也可以是大写)
    • $断言我们已经到达了字符串的末尾
  3. # 3 楼答案

    你可以使用这个正则表达式:

    ^(?!\\d+$)\\w{8,20}$
    

    Working Demo