【问题标题】:Reqular Expression Needed To Check For & Remove Special Characters & White Spaces检查和删除特殊字符和空格所需的正则表达式
【发布时间】:2014-02-24 18:55:07
【问题描述】:

我需要一个正则表达式来检查和删除 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; }

【问题讨论】:

标签: c# regex membershipuser


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2020-02-16
      相关资源
      最近更新 更多