function isUserID($username) {
if (preg_match('/^[a-z\d_]{2,20}$/i', $username)) {
return true;
} else {
return false;
}
}
轻松一个..,我有这个,你能解释它检查的内容吗?我知道它会检查用户名是否有2到20之间的长度,还有什么?感谢
答案 0 :(得分:29)
它搜索仅包含字母数字和下划线字符的文本,长度为2到20个字符。
/^[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
答案 1 :(得分:2)
/^[a-z\d_]{2,20}$/i
拼接起来:
/
是正则表达式分隔符;你可以选择任何你喜欢的东西,但正斜杠是最常见的斜杠。
^
表示'匹配输入的开头':以下表达式必须位于匹配正则表达式的开头。
[a-z\d_]
是一个角色类;它的意思是“方括号之间的任何字符”;反斜杠与d结合使用是“数字”的快捷方式,短划线表示包含范围;因此,字符类说'任何字母或数字,或下划线'。
{2;20}
是一个量词,表示前面的表达式(字符类)必须重复2到20次。
$
表示“匹配输入结束”,类似于^。
另一个/
终止正则表达式本身;以下是游行选项,在本例中为i
,表示“不区分大小写”。
答案 2 :(得分:1)
检查用户名是否包含2到20个字母,这些字母是字母(由于i
标志,大写或小写),数字或下划线。
这可以通过两种方式缩写:首先,if
构造是不必要的。其次,您可以使用\w
代替相同的字符,所以:
function isUserID($username) {
return preg_match('/^\w{2,20}$/', $username);
}
答案 3 :(得分:0)
它还检查它是否包含除字母,a-z和A-Z,数字0-9和_之外的任何字符。
或者你可以说,检查它只包含字母数字字符和_。
这可以被重写为更简单 - preg_match返回一个int,所以没有理由使用'return false,return true'模式。
function isUserID($username){ return (bool)preg_match('/^[a-z\d_]{2,20}$/i', $username); }
会做同样的事情。
此外,\w
表示与这些字符相同的内容。字母,数字和下划线。所以更好的是
function isUserID($username){ return (bool)preg_match('/^[\w]{2,20}$/i', $username); }
答案 4 :(得分:0)
它会逐字检查$username
是否包含2到20个字符a
- z
,A
- Z
的序列(因为< em> i 标记为不区分大小写),0
- 9
(对于\d
)和_
。
答案 5 :(得分:0)
检查一个2-20个字符长的不区分大小写的字母数字单词,由字母,数字和_
组成答案 6 :(得分:-1)
请使用替换您的用户名验证码。
if (preg_match('^[0-9A-Za-z_]+$^', $_POST['username']) == 0) {
die ('Invalid username!');
}