正则表达式包含所有特殊字符
Posted
技术标签:
【中文标题】正则表达式包含所有特殊字符【英文标题】:Regex to include all special characters 【发布时间】:2019-07-22 11:22:21 【问题描述】:我似乎找不到任何合适的答案。
我需要一个正则表达式来确保至少有 one special character
、one number
、one upper
和 one lower
并且至少有 8 个长度。
我这里有一些,但由于某种原因,当我添加更多字符时,它无法识别它们。
ValidationExpression="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%.*?&]8,"
我想添加每个特殊字符。
【问题讨论】:
我不知道我是否会把它变成一个正则表达式,因为这些字符中的任何一个都可以出现在你的字符串中的任何地方,所以它不是一个真正的模式。我可能只会对要验证的字符串的每个要求发出单独的检查。我知道这不是一个整洁的小单行字,但至少它是可读的。 您的意思是要匹配除空格以外的任何字符?将[A-Za-z\d$@$!%.*?&]
替换为\S
我有两个输入字符串,它们正在检查输入字符串中是否存在至少一个上述字符。但我想添加所有可用的特殊字符,以检查至少用户是否至少使用了其中一个。
所以本质上,我想添加 !"£$%^&*()_+:@~?|-=[];'#,./\ 也
Checking strings for a strong enough password的可能重复
【参考方案1】:
请尽量避免使用冗长而复杂的正则表达式,因为将来很难理解和修改它们。而是定义几个简单直接的Regex,然后结合c#代码
var hasLowercaseChar = new Regex("[a-z]");
var hasUppercaseChar = new Regex("[A-Z]");
var hasDigitChar = new Regex("[0-9]");
var hasSpecialChar = new Regex("\\$!\\^-@%&\\.\\*");
var input = "" // your input string here
var passwordIsValid = hasLowercaseChar.IsMatch(input)
&& hasUppercaseChar.IsMatch(input)
&& hasDigitChar.IsMatch(input)
&& hasSpecialChar.IsMatch(input)
&& input.Length >= 8;
在上面的例子中,每个正则表达式都很简单,即使你不确定它应该匹配什么,你也可以从变量名中推断出来
【讨论】:
【参考方案2】:以下正则表达式应该可以解决问题:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*\W)[\S]8,$
【讨论】:
【参考方案3】:尝试正则表达式:(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@!%*?&!"£$%^&*()_+:@~<>?|=[\];'#,.\/\\-])[A-Za-z\d$@!%*?&!"£$%^&*()_+:@~<>?|=[\];'#,.\/\\-]8,
Demo
【讨论】:
以上是关于正则表达式包含所有特殊字符的主要内容,如果未能解决你的问题,请参考以下文章