[英]Regular expression for validating a username?
我仍然有点使用正则表达式,所以这是我的困境。 我有一些可接受的用户名规则,我正在尝试为它们制作表达式。
他们来了:
就我而言,这就是我的意思。
/^[a-zA-Z]{1}([a-zA-Z0-9]|\s(?!\s)){0,14}[^\s]$/
它在很大程度上起作用,但不匹配单个字符,例如“a”。
有人可以帮我从这里出去吗? 我在PHP中使用PCRE,如果这有任何区别。
试试这个:
/^(?=.{1,15}$)[a-zA-Z][a-zA-Z0-9]*(?: [a-zA-Z0-9]+)*$/
先行断言(?=.{1,15}$)
检查长度,其余检查结构:
[a-zA-Z]
确保第一个字符是字母字符; [a-zA-Z0-9]*
允许任意数量的以下字母数字字符; (?: [a-zA-Z0-9]+)*
允许任何数量的一个单一的空间的序列(未的\\s
,允许任何空白字符),必须遵循通过至少一个字母数字字符(参见用于PCRE子模式 (?:…)
语法 。 您还可以删除前瞻断言并使用strlen
检查长度。
你的正则表达式的主要问题是它需要至少两个字符两个匹配:
[a-zA-Z]{1}
部分 [^\\s]
部分 除了这个问题,我看到你的正则表达式的一些部分可以改进:
[^\\s]
类将匹配任何字符,空格除外:将接受点或分号,尝试使用[a-zA-Z0-9]
类来确保字符是正确的。 {1}
开头部分,正则表达式将匹配在默认情况下只有一个角色 在你的第一个角色可选后做一切
^[a-zA-Z]?([a-zA-Z0-9]|\s(?!\s)){0,14}[^\s]$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.