我正在写一个移动网站,我希望用户能够通过用户名或电话号码登录.我认为验证其响应的简单方法是不允许他们使用电话号码作为用户名进行注册.
问题是我需要检查用户名字段的输入是否只是10或11位数.这就是我在正则表达式上的昙花一现不利于我的地方.我希望尝试类似的东西
function do_reg($text, $regex)
{
if (preg_match($regex, $text)) {
return TRUE;
}
else {
return FALSE;
}
}
$username = $_POST['username'];
if(do_reg($username, '[0-9]{10,11}')){
die('cannot use a 10 or 11 digit number as a username');
}
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式匹配所有10-11位长的数字.我想也许我需要一种方法来说明用户输入字段中的唯一内容是10-11位数字生气,否则释放蝴蝶和彩虹.
编辑:为了记录我决定确保用户名不是一个数字.认为这会更简单,我不喜欢让人们使用数字作为登录的想法.
所以我结束了
if (!empty($username) && preg_match('/^\d+$/', $username )) {
die('username cannot be a number');
}
Run Code Online (Sandbox Code Playgroud)
谢谢大家的帮助.
你几乎是正确的,除了PHP中的PCRE需要分隔符,并且可能有一些锚点以确保该字段仅由数字组成.
if(do_reg($username, '/^\d{10,11}$/')){
// ^^ ^^
Run Code Online (Sandbox Code Playgroud)
并且可能使用\d
而不是[0-9]
.
(顺便说一句,你应该直接打电话preg_match
:
if (!preg_match('/^\d{10,11}$/', $username)) {
release('bufferflies', 'rainbows');
}
Run Code Online (Sandbox Code Playgroud)