/^[a-z\d_]{2,20}$/i
|||| | ||| |||
|||| | ||| ||i : case insensitive
|||| | ||| |/ : end of regex
|||| | ||| $ : end of text
|||| | ||{2,20} : repeated 2 to 20 times
|||| | |] : end character group
|||| | _ : underscore
|||| \d : any digit
|||a-z: 'a' through 'z'
||[ : start character group
|^ : beginning of text
/ : regex start
7条答案
按热度按时间zlhcx6iw1#
它会搜寻仅包含英数字元和底缐字符的文字,长度为2到20个字符。
j9per5c42#
拼接:
/
是正则表达式定界符;你可以选择任何你喜欢的,但正斜杠是最常见的。^
表示“匹配输入的开头”:以下表达式必须位于正则表达式的开头才能匹配。[a-z\d_]
是字符类;它表示"方括号之间的任何字符“;反斜杠与d的组合是“digits”的快捷方式,破折号表示包含范围;因此,字符类表示“任何字母或数字,或下划线”。{2;20}
是一个量词,表示前面的表达式(字符类)必须重复2到20次。$
表示“匹配输入结尾”,类似于^。另一个
/
终止了正则表达式本身;下面是处理选项,在本例中为i
,表示“不区分大小写”。f0ofjuux3#
它检查用户名是否由2到20个字母(大写或小写,取决于
i
标志)、数字或下划线组成。这可以用两种方式缩写:首先,
if
结构是不必要的。其次,您可以使用\w
作为这些相同字符的替代,因此:at0kjp5o4#
它从字面上检查
$username
是否由a
-z
、A
-Z
(因为 i 标志不区分大小写)、0
-9
(对于\d
)和_
的2到20个字符组成。kqlmhetl5#
它还检查它是否包含除字母表、a-z和A-Z、数字0-9和_以外的任何字符。
或者您可以说,检查它是否只包含字母数字字符和_。
这也可以重写得更简单- preg_match返回一个int,所以没有理由使用'return false,return true'模式。
会做同样的事情。
而且,
\w
和那些字符的意思是一样的。字母、数字和下划线。所以更好的是hpxqektj6#
它正在检查由字母、数字和_组成的长度为2-20个字符且不区分大小写的字母数字词
f45qwnt87#
请使用替换您的用户名验证代码。