【发布时间】:2011-07-28 19:34:33
【问题描述】:
我正在编写一个移动网站,我希望用户能够通过用户名或电话号码登录。我认为验证他们的回复的最简单方法是不允许他们使用电话号码作为用户名进行注册。
问题是我需要检查用户名字段的输入是否只是一个 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');
}
上述正则表达式匹配所有 10-11 位数字。我想也许我需要一种方式来说明用户输入字段中的唯一内容是否是 10-11 位数字,否则会释放蝴蝶和彩虹。
编辑:为了记录,我决定确保用户名不只是一个数字。认为这会更简单,我不喜欢让人们使用数字作为登录名的想法。
所以我最终选择了
if (!empty($username) && preg_match('/^\d+$/', $username )) {
die('username cannot be a number');
}
感谢大家的帮助。
【问题讨论】:
-
您的
do_reg函数没有理由存在。没用 - 使用preg_matchinstad。