[英]validate username with regex in javascript
我是正则表达式的新手,想创建一个正则表达式来检查用户名。 这些是条件:
例子
我试图创建自己的正则表达式,但只到了指定允许字符的地步:
[a-z0-9.-_]{4,20}
不幸的是,如果中间有空格,它仍然匹配字符串,并且可能有两个特殊字符 .-_ 连续:
如果有人能够在这个问题上为我提供帮助,我将不胜感激。 请记住,我是正则表达式的新手并且仍在学习它。 因此,对您的正则表达式的解释会很棒。
提前致谢 :)
有时,编写正则表达式几乎与查找用户名一样具有挑战性。 但是在这里你已经很接近让它工作了。 我可以指出您的尝试失败的三个原因。
首先,我们需要匹配所有输入字符串,而不仅仅是其中的一部分,因为我们不想忽略输入中出现的空格和其他字符之类的东西。 为此,通常会分别使用锚点^
(匹配开始)和$
(匹配结束)。
还有一点是我们需要防止两个特殊字符出现在彼此的旁边。 这最好通过负前瞻来完成。
最后,我可以看到您用来测试正则表达式的工具正在添加标志gmi
,这不是我们想要的。 特别是, i
标志表示正则表达式应该不区分大小写,因此它应该像小写字母一样匹配大写字母。 去掉那个标志。
最终的正则表达式如下所示:
/^([a-z0-9]|[-._](?![-._])){4,20}$/
这里没有什么真正神秘的,除了组[-._](?![-._])
这意味着任何-._
后面没有任何-._
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.