如何在注册时禁止在用户名中使用特殊字符、空格、大写字母和圆点?

时间:2017-09-29 作者:gul rathod

我正在运行会员网站。任何人都可以在我的网站上注册。

我不允许使用特殊字符(即:!@#$%^&;*)、空格、大写字母、点(.)注册时使用用户名。

我没有任何代码可以满足我的所有(特殊字符、空格、大写字母、dot)要求。我正在使用单独的函数来停止此操作。

对于用户名中不允许的大写字母:

add_filter( \'sanitize_user\', \'wpse_83689_lower_case_user_name\' );
function wpse_83689_lower_case_user_name( $name ) {
if ( function_exists( \'mb_strtolower\' ) )
    return mb_strtolower( $name );

return strtolower( $name );

对于用户名中不允许的空格:

add_filter(\'validate_username\' , \'custom_validate_username\', 10, 2);

function custom_validate_username($valid, $username ) {
    if (preg_match("/\\\\s/", $username)) {
        // there are spaces
        return $valid=false;
    }

return $valid;
}
我做了很多谷歌,但我没有找到任何不允许点和特殊字符的解决方案。

有谁能解决我的这个问题,并将所有4个选项组合在一个函数中?

对不起,我的英语不好。

谢谢

2 个回复
SO网友:Shital Marakana

please try below function for disallow special characters, space, capital letter, dot in user name on registration

 //add a filter to invalidate a username with spaces,special characters, capital letter, dot
    add_filter(\'validate_username\',\'restrict_space_in_username\',10,2);
    function restrict_space_in_username($valid,$user_name){
     //check if there is an space
     if ( preg_match(\'/\\s[!@#$%^&*()+=\\-\\[\\]\\\';,.\\/{}|":<>?~\\\\\\\\][A-Z](.)/\',$user_name) )
     return false;//if myes, then we say it is an error
     return $valid;//otherwise return the actual validity
    }
SO网友:ericek111

使用匹配所有内容的正则表达式except 小写ASCII字符。您可以轻松添加更多您认为允许的字符(可能是下划线_?) 甚至是一些正则表达式魔法:

add_filter(\'validate_username\', function (bool $isValid, string $username): bool {
    if (preg_match(\'/[^a-z]/\', $username)) {
        return false;
    }
    
    return $isValid;
});
Thevalidate_user filter 内部已检查register_new_user 并防止用户在以下情况下注册false 在向用户显示错误消息时返回。

结束

相关推荐

如何通过AJAX显示PHP Foreach循环的答案

我的AJAX请求中有一个问题,我试图从foreach循环中获取值,但它返回空值Functions.php file function selectEstado(){ global $wpdb; if(isset($_POST[\"selectVal\"])){ $Estado_id = $_POST[\"selectVal\"]; $Estado = $wpdb->get_results(\"SELECT * FROM co