正则表达式包含所有特殊字符

Posted

技术标签:

【中文标题】正则表达式包含所有特殊字符【英文标题】:Regex to include all special characters 【发布时间】:2019-07-22 11:22:21 【问题描述】:

我似乎找不到任何合适的答案。

我需要一个正则表达式来确保至少有 one special characterone numberone upperone 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

【讨论】:

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

正则表达式必须包含字母数字和特殊字符

需要在正则表达式中转义的所有特殊字符的列表

js正则怎么判断一个字符串里必须包含大写字母,小写字母,数字,特殊字符? 看清楚了,是必须包含,求教

必须包含数字、字母、特殊字符三种的正则?

正则表达式,不包含某特殊符号

正则表达式,不包含某特殊符号