用户标识的正则表达式

时间:2014-06-19 10:40:57

标签: java regex

我是正则表达式的新手。

我要求使用以下标准编写正则表达式

  • 用户ID不能全是数字
  • 用户ID不能包含特殊字符
  • 最少8个字符的长度
  • 最多20个字符
  • 可以全部按字母顺序排列
  • 可以是字母数字

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

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

3 个答案:

答案 0 :(得分:4)

您可以使用:

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

请参阅demo哪些有效,哪些无效

  • (?i)使其不区分大小写
  • ^声称我们位于字符串的开头
  • 前瞻(?=.*[a-z])检查我们至少有一个字母
  • [a-z0-9]{8,20}匹配8到20个字母或数字(字母也可以是大写)
  • $断言我们已到达字符串
  • 的末尾

答案 1 :(得分:1)

您可以使用此正则表达式:

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

Working Demo

答案 2 :(得分:0)

尝试使用此代码并检查:

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());
}