使用preg_match在PHP中使用RegEx

Ron*_*des 1 php regex

我有一个reg exp,它应该检查名称中是否有任何非法字符.允许的字符是0-9,az,AZ,middlescore( - )和下划线(_).

这是功能

function validate_playername($playername){
    if (preg_match('/^[0-9A-Z-_]$/i',$playername)) {
        return true;
    } else{
        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

这个函数就是这样调用的

if (validate_playername($addplayer)) {
    echo "valid player Name";
} else {
    echo "Invalid Player Name";
}
Run Code Online (Sandbox Code Playgroud)

但是,当我输入像velocity28这样的正确名称时,它将返回无效的播放器名称.我的reg错了吗?

fal*_*tru 5

/^[0-9A-Z-_]$/i 只匹配一个字符.

追加+以匹配多个字符:

'/^[-0-9A-Z_]+$/i'
Run Code Online (Sandbox Code Playgroud)
  • 搬到-了开头.

UPDATE

正如Enissay评论的那样,正则表达式可以通过以下方式简化\w:

'/^[-\w]+$/'
Run Code Online (Sandbox Code Playgroud)