我正在检查用户输入的 用户名

我正在尝试使用 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/

    10-11 10:53