我正在检查用户输入的 用户名
我正在尝试使用 preg_match() 在 PHP 中验证用户名,但我似乎无法让它按照我想要的方式工作。我需要 preg_match() 来:
即仅字母数字点破折号和下划线,我尝试了 htaccess 中的正则表达式,就像这样
([A-Za-z0-9.-_]+)
像这样,但它似乎不起作用,它为简单的 alpha 用户名提供 false。
$text = 'username';
if (preg_match('/^[A-Za-z0-9.-_]$/' , $text)) {
echo 'true';
} else {
echo 'false';
}
我怎样才能让它工作?
我将在这样的功能中使用它
//check if username is valid
function isValidUsername($str) {
return preg_match('/[^A-Za-z0-9.-_]/', $str);
}
我在 preg_match() and username 中尝试了 answwer,但在正则表达式中仍然有问题。
更新
我在这样的函数内部使用 xdazz 给出的代码。
//check if username is valid
function isValidUsername($str) {
if (preg_match('/^[A-Za-z0-9._-]+$/' , $str)) {
return true;
} else {
return false;
}
}
并检查它像
$text = 'username._-546_546AAA';
if (isValidUsername($text) === true) {
echo 'good';
}
else{
echo 'bad';
}
最佳答案
您错过了 +
(+
表示一个或多个,*
表示零个或多个),或者您的正则表达式仅匹配具有一个字符的字符串。
if (preg_match('/^[A-Za-z0-9._-]+$/' , $text)) {
echo 'true';
} else {
echo 'false';
}
关于php - 使用 preg_match 检查字母数字点划线和下划线的正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25196653/