具有特定特殊字符的用户名的正则表达式

Posted

技术标签:

【中文标题】具有特定特殊字符的用户名的正则表达式【英文标题】:Regular Expression for username with particular special character 【发布时间】:2021-11-09 16:43:36 【问题描述】:

我必须使用特殊字符验证用户名。例如:

raaghu@09$%^& @Raaghu098 拉古 9raghu  

只允许使用这些特殊字符:%^&@#$^*:'.-_

我该怎么做?

【问题讨论】:

特殊字符是可选的吗?我不明白这个问题 请在Minimal, Reproducible Example 上发布您的尝试,以便我们进一步帮助您。 嗨 AliReza,是的,特殊字符是可选的,如果用户名有任何特殊字符,它应该包含以下任何字符 "%^& @#$^* "。 我试过这样的字符串 username = "0sachin02$"; var specialCharcter = new Regex(@"^[a-zA-Z0-9]*[~`!@#$%^&*'.-_]$"); bool isMatch = specialCharcter.IsMatch(用户名); 【参考方案1】:

这应该可以工作:^(?:[a-zA-Z0-9%^&@#$^*:'.\-_]+)$

    var pattern = @"^(?:[a-zA-Z0-9%^&@#$^*:'.\-_]+)$";
    var validUsername = "raaghu@-09_$%^&";
    var InvalidUsername = "raaghu@09$%^&!";
    
    Regex.IsMatch(validUsername , pattern); // true
    Regex.IsMatch(InvalidUsername , pattern); // false

【讨论】:

谢谢,我的需求模式中的小更新还应该包括更多的字符:'.-_ 添加新字符后它不起作用。新模式是 var newpattern = (@"^(?:[a-zA-Z0-9~`!@#$%^&'.-_]+)$"); 我已经更新了答案。您还应该在问题中提出您的要求。祝你好运

以上是关于具有特定特殊字符的用户名的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

刨根究底正则表达式之二——正则表达式基础

Linux学习总结: 正则表达式

Linux学习总结: 正则表达式

具有特殊字符的Javascript正则表达式密码验证

正则表达式匹配具有两个或多个特殊字符的强密码

具有特殊字符的正则表达式嵌套结构