代码之家  ›  专栏  ›  技术社区  ›  George Alexander

类似电报的用户名的Regex

  •  -2
  • George Alexander  · 技术社区  · 1 年前

    我正在构建消息应用程序,在注册新用户时需要正则表达式来验证用户名。 用户名必须至少有5个字符长(该长度中不少于3个字符必须是字母),没有空格,并且只能由a-z、09和下划线组成。

    const valid = new RegExp(...);
    
    const username_a = "john_doe";
    const username_b = "johndoe";
    const username_c = "John Doe";
    const username_d = "john.doe";
    const username_e = "john";
    
    valid.test(username_a) = true;
    valid.test(username_b) = true;
    valid.test(username_c) = false;
    valid.test(username_d) = false;
    valid.test(username_e) = false;
    

    我不熟悉regex构建,所以请帮忙!

    1 回复  |  直到 1 年前
        1
  •  1
  •   Alexander Nenashev    1 年前

    正如Pushpesh在评论中所建议的:

    const valid = /^(?=(?:[0-9_]*[a-z]){3})[a-z0-9_]{5,}$/;
    
    const names = 'john_doe,johndoe,j2e2p2,John Doe,john.doe,johh,joh2_23,jo2e_234,jo23_22'.split(',');
    
    for(const name of names){
      console.log(name, valid.test(name));
    }