【问题标题】:password verification non successive numbers with javascript [closed]使用javascript验证非连续数字的密码[关闭]
【发布时间】:2016-11-24 12:40:21
【问题描述】:

我需要使用 JavaScript 验证使用此标准输入的密码(如果可能,服务器端 c# 会很棒)并显示消息:-

  • 密码必须是数字。
  • 长度

这就是复杂性所在:-

  • 我不能同时拥有像 11111111 或 22222222 或 55559852 或 12349421 或 98762534 这样的双方

所以我需要控制 4 位数字的连续性,无论它们位于何处。任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 到目前为止你做了什么?
  • 我正在研究这个js组件strenght passwordstrenght password
  • 使用 Javascript 验证它的一切都很好,但是用户可以在验证之后但在它被发送到服务器之前修改它的值..
  • @stuartd: 没必要.. 用 {return true} 覆盖验证函数。
  • @Lain 整洁 :) .

标签: javascript c# html


【解决方案1】:

尝试使用此算法:

Javascript 代码:

https://jsfiddle.net/b8xm4zkg/1/

function validatePassword(password)
{
    if(isNaN(password))
        return false;

    if(password == null || password.length < 7)
        return false;

    for(var x = 3; x <= password.length; x++)
    {
        if(password[x] == password[x-1] && password[x] == password[x-2] && password[x] == password[x-3])
            return false;

        var pNumber = parseInt(password[x]);

        if(pNumber + 1 == password[x-1] && pNumber + 2 == password[x-2] && pNumber + 3 == password[x-3])
            return false;

        if(pNumber - 1 == password[x-1] && pNumber - 2 == password[x-2] && pNumber - 3 == password[x-3])
            return false;
    }

    return true;
}

JS 用法:

if(validatePassword("1233457638789"))
{
    //Valid
}
else
{
    //Invalid
}

C# 代码:

https://dotnetfiddle.net/Mf4aLB

public static bool ValidatePassword(string password)
{
    if (string.IsNullOrWhiteSpace(password))
        return false;

    if(password.Length <= 7)
        return false;

    string justNumbers = new String(password.Where(Char.IsDigit).ToArray());
    if(!justNumbers.Equals(password))
       return false;

    for(int x = 3; x < password.Length; x++)
    {
        if(password[x] == password[x-1] && password[x] == password[x-2] && password[x] == password[x-3])
            return false;

        int pNumber = int.Parse(password[x].ToString()); 

        if ((pNumber + 1).ToString() == password[x-1].ToString() && (pNumber + 2).ToString() == password[x-2].ToString() && (pNumber + 3).ToString() == password[x-3].ToString())
            return false;

        if ((pNumber - 1).ToString() == password[x-1].ToString() && (pNumber - 2).ToString() == password[x-2].ToString() && (pNumber - 3).ToString() == password[x-3].ToString())
            return false;
    }

    return true;
}

C# 用法:

if(ValidatePassword("1233457638789"))
{
    //Valid
}
else
{
    //Invalid
}

【讨论】:

  • 我不想取笑您的时间和精力,但在 JavaScript 中验证密码不是很傻吗?每个人都可以打开控制台并输入“var validatePassword = function(){return true}”。
  • 对不起...我添加了 C# 版本! ;)
  • 我很感谢@IgorQuirino 的帮助我如何测试java脚本代码你能提到html等价物吗
  • @anass90 我添加到我的答案中,好吗?
  • @IgorQuirino 我已经完成了测试,但是在每个值中它都显示有效!我不明白其中的逻辑!
猜你喜欢
  • 1970-01-01
  • 2020-02-12
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多