C# 用于字母数字密码的正则表达式,至少包含1个数字和字符
需要有关字母数字密码正则表达式的帮助,至少包含1个数字和字符,长度必须介于8-20个字符之间 我有这个,但似乎不起作用(它也没有长度要求):C# 用于字母数字密码的正则表达式,至少包含1个数字和字符,c#,javascript,C#,Javascript,需要有关字母数字密码正则表达式的帮助,至少包含1个数字和字符,长度必须介于8-20个字符之间 我有这个,但似乎不起作用(它也没有长度要求): ?:) 使用一些简单的字符串函数进行验证,而不是试图强迫一个难以验证的正则表达式进行验证,这不是更好吗?如果您看一下,它给出了一个密码验证正则表达式的示例,以及(更具体地说)如何在ASP.NET中使用它 对于您希望实现的目标,这应该是可行的: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$ 这需要
?:) 使用一些简单的字符串函数进行验证,而不是试图强迫一个难以验证的正则表达式进行验证,这不是更好吗?如果您看一下,它给出了一个密码验证正则表达式的示例,以及(更具体地说)如何在ASP.NET中使用它 对于您希望实现的目标,这应该是可行的:
(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$
这需要至少一个数字,至少一个字母字符,无特殊字符,长度为8-20个字符。类似的内容将更符合您的需要。(不过,我没有测试它。)
Regex-test=newregex(“^(?:([A-Za-z])|([9-0]){8,20}$”;
匹配m=测试。匹配(输入);
if(m.Success&&m.Groups[“ch”].Captures.Count>1&&m.Groups[“num”].Captures.Count>1)
{
//这是一个很好的密码。
}
为什么不使用一些简单的函数来检查呢
checkPasswordLength( String password);
checkPasswordNumber( String password);
可能需要更多的代码来反复连续地检查相同字符的出现情况。此代码适用于javascript
// *********** ALPHA-Numeric check ***************************
function checkAlphaNumeric(val)
{
var mystring=new String(val)
if(mystring.search(/[0-9]+/)==-1) // Check at-leat one number
{
return false;
}
if(mystring.search(/[A-Z]+/)==-1 && mystring.search(/[a-z]+/)==-1) // Check at-leat one character
{
return false;
}
}
嗯,有时候正则表达式更容易进行这种(密码?)验证。特别是因为您可以使用Asp.Net regex validators:)Sanjay,输入验证是regex最常见的应用程序之一,如果/当验证要求发生变化时,使用它们可以为您提供更大的灵活性。regex validation不会告诉您输入失败的原因,除了“这与regex不匹配”之外所以你不能明确地告诉用户他做错了什么。在很多情况下,这是可以的。输入验证是regex非常适合的事情,使用regex表达式在将来会给你更多的灵活性。当你做了不匹配的lookaheads之类的事情时,它们并不适合。如果你使用正则表达式,没有理由把所有的东西都塞进一个正则表达式中+亚当·罗宾逊——谁说checkPasswordLength()不能在函数中使用正则表达式?没有什么能阻止你在这个解决方案中利用它们的优势。@ceeja,@John:RegEx的灵活性和速度很大程度上来自于能够在一次过程中检查事物(至少从开发的角度来看)。将它明确地或通过封装在多个函数中分解为两个语句,将减少它。对于如此简单的事情,它似乎也被过度设计了。我看不出使用正则表达式验证输入是多么“疯狂”。似乎结尾处的.*甚至会匹配特殊字符。要澄清的是,第一个“负面前瞻断言”,即“(?!^[0-9]*$”,负责确保至少有一个字母字符,第二个是确保至少有一个数字,最后是“^([a-zA-Z0-9]{8,20})$”表示我们需要8-20个字母数字。
Regex test = new Regex("^(?:(?<ch>[A-Za-z])|(?<num>[9-0])){8,20}$");
Match m = test.Match(input);
if (m.Success && m.Groups["ch"].Captures.Count > 1 && m.Groups["num"].Captures.Count > 1)
{
// It's a good password.
}
checkPasswordLength( String password);
checkPasswordNumber( String password);
// *********** ALPHA-Numeric check ***************************
function checkAlphaNumeric(val)
{
var mystring=new String(val)
if(mystring.search(/[0-9]+/)==-1) // Check at-leat one number
{
return false;
}
if(mystring.search(/[A-Z]+/)==-1 && mystring.search(/[a-z]+/)==-1) // Check at-leat one character
{
return false;
}
}