javascript - 编写将过滤输入的用户名的正则表达式
问题描述
我想编写一个正则表达式来过滤任何用户名:
- 以数字或字母开头(不区分大小写)
可以包含
-
但不能连续包含多个例如
u-s-e-r
✔us-er
✔us--er
✖</p>用户名也不能以开头
-
或结尾-
例子
-user
✖✖user-
</p>- 它还需要至少 1 个字符(字母或数字)且最多 39 个。
我最接近我的结果是这样的:
^[a-zA-Z\d](?:[a-zA-Z\d]|-(?=[a-zA-Z\d])){0,38}
这完全匹配它应该匹配的东西,但它也匹配一些它不应该匹配的东西。
基本上这些不应该是有效的:
-username
_username_
__us_ername
us_er
username-
1user--name
132uname-
-uname1234
-username-
user--name
av34axc-
1234567890A1234567890B1234567890C1234567890D
这些应该是有效的:
Username
a-a
aBc
BaC
1-1
1-2-3-4
q-1-2-3
q-q-q-q-q
username
123username123
username3123
1234
user-name
13-13
q1-q2-q3
a
A
1234567890A1234567890B1234567890C123456
1234567890A123456-7890B1234567890C12345
解决方案
推荐阅读
- java - 如何获取 Java gDrive api 的类 com.google.common.base.Precondition?
- php - 如何在不同的线程上多次从 C 执行相同的 PHP 脚本?
- matlab - 在 Matlab 中定义变量的帮助
- redis - Redis vs Aerospike 用例?
- laravel - 模型关系未找到该属性
- python - 为什么不能通过 try-except 处理“io.UnsupportedOperation”错误
- java - 如何使用 Arraylist 中的值填充 Jtable(Jtables 中的空指针异常)
- node.js - 有没有机会让 websocket 客户端连接到负载均衡器后面的 aws ec2 服务器?
- python - 使用列上的过滤器进行数据操作
- c# - [BotFramework]:在 C# 中使用 SDK V4 开发的 BOT 中,有没有办法在英雄卡或自适应卡中显示 Oauth 提示?