Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于字母数字密码的正则表达式,至少包含1个数字和字符_C#_Javascript - Fatal编程技术网

C# 用于字母数字密码的正则表达式,至少包含1个数字和字符

C# 用于字母数字密码的正则表达式,至少包含1个数字和字符,c#,javascript,C#,Javascript,需要有关字母数字密码正则表达式的帮助,至少包含1个数字和字符,长度必须介于8-20个字符之间 我有这个,但似乎不起作用(它也没有长度要求): ?:) 使用一些简单的字符串函数进行验证,而不是试图强迫一个难以验证的正则表达式进行验证,这不是更好吗?如果您看一下,它给出了一个密码验证正则表达式的示例,以及(更具体地说)如何在ASP.NET中使用它 对于您希望实现的目标,这应该是可行的: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,20})$ 这需要

需要有关字母数字密码正则表达式的帮助,至少包含1个数字和字符,长度必须介于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;
    }
}