我需要一个正则表达式的密码.密码必须至少包含8个字符.至少一个字符必须是数字或特殊字符(不是字母).
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 8)]
[RegularExpression(@"(?=.*\W)?(?=.*\d)", ErrorMessage = "Error message")]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
Run Code Online (Sandbox Code Playgroud)
我有一个长度验证,但我需要一个正则表达式的帮助,检查密码是否包含至少一个数字或特殊字符.
有效密码的示例:
testtest85*
testtes*
testtes1
test1234*+
Run Code Online (Sandbox Code Playgroud)
无效密码的示例:
testtest
testabc
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个模式匹配的正则表达式(用于密码),其中字符串必须在8到30个字符之间,必须至少有2个数字,至少2个字母(不区分大小写),至少1个特殊字符,以及空间不足.
我有空格和特殊字符匹配工作,但我被抛出2位数字和2个字母,因为它们不需要连续.
即它应匹配a1b2c$ 或ab12$或1aab2c$.
这些字母有这样的东西吗?
(?=.*[a-zA-Z].*[a-zA-Z]) // Not sure.
Run Code Online (Sandbox Code Playgroud)
下面这个字符串有效,但只有当2个字母是连续的并且2个数字是连续的时...如果字母,数字,特殊字符交织在一起则失败.
(?=^.{8,30}$)((?=.*\\d)(?=.*[A-Za-z]{2})(?=.*[0-9]{2})(?=.*[!@#$%^&*?]{1})(?!.*[\\s]))^.*
Run Code Online (Sandbox Code Playgroud) 这个问题是对这个问题的跟进:
这个问题非常适合理解为什么使用char []而不是String; 但是,它没有解释如何以安全的方式对char []执行密码验证.这就是我想知道的.
简而言之,我需要检查密码是否符合以下要求:
现在我明白了如何使用正则表达式来执行验证......这些答案显示了如何做到这一点:
据我所知,正则表达式检查涉及使用字符串.使用它们似乎不安全,因为字符串是不可变的,因此在使用它们后不能立即清除它们.另一方面,char []可以被清除.
我可以遍历每个角色,但是我必须创建我想要测试的每个集合.理想情况下,能够利用正则表达式会很有用.
在Java中,我可以通过以下方法进行正则表达式检查.
String.matches(String regex)
Run Code Online (Sandbox Code Playgroud)
要么
Pattern pattern = Pattern.compile(String regex);
pattern.matcher(CharSequence testString).matches();
Run Code Online (Sandbox Code Playgroud)
如您所见,这两种方法都不支持直接使用char [].
这一定很简单,我希望它以同样的方式工作,但它并没有帮助我.
using System;
using System.Text.RegularExpressions;
Run Code Online (Sandbox Code Playgroud)
我需要在password validation regular expression某些条件下 -
1)必须至少包含一个数字
2)一个大写字母
3)长8个字符.
public class Program
{
public static bool IsValidPassword(string plainText) {
Regex regex = new Regex(@"^(.{0,7}|[^0-9]*|[^A-Z])$");
Match match = regex.Match(plainText);
return match.Success;
}
public static void Main()
{
Console.WriteLine(IsValidPassword("shing")); //logs 'True' always
}
}
Run Code Online (Sandbox Code Playgroud)
我已经采取了正则表达式从这个源- 密码必须为8个字符,包括1个大写字母,特殊字符,字母数字字符
问题是它总是返回'True'并且我发送给方法的字符串无效.
如果我正在使用正则表达式做错了,请帮助我.
请在这里玩 - https://dotnetfiddle.net/lEFYGJ
我需要 1 个大写 1 个特殊字符和 1 个小写字母的正则表达式注意需要允许所有特殊字符,并且长度应大于 8 个字符。
我试过 /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/这个,但这限制了一些特殊字符。
我需要验证用户需要设置最小值,1个上限,1个下限和1个特殊字符...我只是验证用户需要最少6个字母或更多...
try
{
string actualPass = this.txtactualPass.Text;
string newPass = this.txtnewPass.Text;
string reEnterPass = this.txtReEnterPass.Text;
if (actualPass == this.Session["password"].ToString())
{
if (newPass.Length >= 6)
{
Run Code Online (Sandbox Code Playgroud)