我是正则表达式的新手,想创建一个正则表达式来检查用户名。这些是条件:
例子
我尝试创建自己的正则表达式,但只指定了允许的字符:
[a-z0-9.-_]{4,20}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果中间有空格,它仍然匹配字符串,并且可能连续有两个特殊字符 .-_ :
如果有人能够在这个问题上为我提供帮助,我将不胜感激。请记住,我是正则表达式的新手,仍在学习中。因此,对你的正则表达式的解释会很棒。
提前致谢 :)
有时编写正则表达式几乎与查找用户名一样具有挑战性。但在这里你已经非常接近成功了。我可以指出你的尝试失败的三个原因。
首先,我们需要匹配所有输入字符串,而不仅仅是其中的一部分,因为我们不想忽略输入中出现的空格和其他字符。为此,通常会分别使用锚点^(比赛开始)和$(比赛结束)。
还有一点是我们需要防止两个特殊字符相邻出现。最好通过负前瞻来完成此操作。
最后,我可以看到您用来测试正则表达式的工具正在添加 flags gmi,这不是我们想要的。特别是,该i标志表示正则表达式应该不区分大小写,因此它应该像小写字母一样匹配大写字母。删除该标志。
最终的正则表达式如下所示:
/^([a-z0-9]|[-._](?![-._])){4,20}$/
这里没有什么真正神秘的,除了组[-._](?![-._]),这意味着任何一个-._不跟随任何一个-._。
| 归档时间: |
|
| 查看次数: |
2642 次 |
| 最近记录: |