提问人:George Alexander 提问时间:8/1/2023 更新时间:8/1/2023 访问量:255
类似电报的用户名的正则表达式
Regex for telegram-like username
问:
我正在构建消息传递应用程序,在注册新用户时需要正则表达式来验证用户名。 用户名长度必须至少为 5 个字符(该长度的不少于 3 个字符必须为字母),不能有空格,并且只能由 a-z、0-9 和下划线组成。
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;
我不熟悉正则表达式构建,所以请帮忙!
答:
1赞
Alexander Nenashev
8/1/2023
#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));
}
评论
0赞
George Alexander
8/1/2023
谢谢,正是我一直在寻找的!
0赞
Alexander Nenashev
8/1/2023
@GeorgeAlexander不确定,无法验证。思维。。。j2e2p2
1赞
Pushpesh Kumar Rajwanshi
8/1/2023
这适用于所有情况^(?=(?:[0-9_]*[a-z]){3})[a-z0-9_]{5,}$
0赞
Alexander Nenashev
8/1/2023
@PushpeshKumarRajwanshi不错,更新了我的答案,免费填写以发布答案,我将删除我的答案。只需发表评论通知我
2赞
Pushpesh Kumar Rajwanshi
8/1/2023
@AlexanderNenashev:一切都很好,因为你已经用正确的答案更新了你的答案。
评论
=(?:[0-9_]*[a-z]){3})[a-z0-9_]{5,}$