0

我需要一个正则表达式来检查和删除特殊字符MembershipUser userName

当我第一次将站点设置为 beta 时,我没有考虑到特殊字符不是用于用户名的好方法,“在我的应用程序中”。

我在下面有一段模板代码,它没有正确编写,但给愿意帮助的人提供了一个良好的开端。

--我需要从用户名中删除所有特殊字符和空格,同时更新用户名。

当我说特殊字符时,我指的是 ~,`,!,@,#,$,%,^,&,*,(,),+,=,' ',;,:,,{,}。我需要检查当前用户的用户名,看看他们是否有任何这些类型的特殊字符,并将它们从该特定用户用户名中删除,并用“_”或“-”替换任何特殊字符。

我需要检查并确保任何现有用户名仅包含字母和数字,并且用户名不得以数字开头,并且必须以大写或小写字母开头。

MembershipUserCollection users = Membership.GetAllUsers();
List<MembershipUser> userToEmail= new List<MembershipUser>();

foreach (MembershipUser user in users) {
    if (user.UserName./*Some type of reg expression here to check for special characters and white spaces*/) {
        user.UserName = user.UserName /*some reg expression to remove special characers and white spaces*/
        Membership.UpdateUser(user);
        userToEmail.Add(user);
    }
}

void EmailUser(List<MembershipUser> userToEmail){}

--我目前正在使用下面的代码来确保首次创建用户帐户时用户名中只使用字母和数字。

截至目前,我需要user.Replace(regexpression,"-")清理现有的用户名。

[Required]
[Display(Name = "User name:")]
[StringLength(256, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 7)]
[RegularExpression(@"^[a-zA-Z0-9]*$", ErrorMessage = "The user name can only contain letters and numbers.")]
        public string UserName { get; set; }
4

2 回答 2

0

如果“特殊”是指单引号和感叹号(仅作为示例),则正则表达式[ '!]将匹配单个字符,即空格、引号或感叹号。

于 2014-02-24T19:16:46.683 回答
0

"\W" 匹配除字母、数字和下划线以外的任何字符。您可以用“_”对“\W”进行全局替换,尽管如果您只检查“\W”,然后返回一条错误消息,告诉他们哪些字符是允许的,哪些是不允许的,这对您的用户来说可能不会那么令人惊讶。

于 2014-02-24T20:03:55.447 回答