正常表达需要检查&删除特殊字符&白色空间

时间:2014-02-24 18:55:08

标签: c# regex membershipuser

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

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

我在下面有一段代码模板,但是没有正确编写,但却给了那些愿意帮助我们先行的人。

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

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

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

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; }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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