如何将此代码块转换为javascript?

时间:2020-08-12 06:05:11

标签: javascript python django

我正在尝试将此代码移植到javascript中以支持我的后端验证。但是,我不确定javascript是否具有任何或isdigit()或理解列表以实现这一目标

def clean_password1(self):
    password1 = self.cleaned_data.get('password1')
    special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;,'\[\]]"

    if not any(char.isdigit() for char in password1):
        raise forms.ValidationError(
            'Password must contain at least %(min_length)d digit.' % {'min_length': 2})

    if not any(char.isalpha() for char in password1):
        raise forms.ValidationError(
            'Password must contain at least %(min_length)d letter.' % {'min_length': 6})

    if not any(char in special_characters for char in password1):
        raise forms.ValidationError(
            'Password must contain at least %(min_length)d special character.' % {'min_length': 1})

    if len(password1) < 8:
        raise forms.ValidationError(
            'Password must contain at least %(min_length)d characters.' % {'min_length': 8})

javascript

if (password.length < 8){
  addErrorTo('password', data['message']['password1']);
}

2 个答案:

答案 0 :(得分:0)

  • Number.isInteger检查输入是否为数字。但是输入必须是数字,因此parseInt(char)首先http://www.w3schools.com/jsref/jsref_isinteger.asp

  • 对于isAlpha,您可以使用正则表达式测试字符串。

  • 对于特殊字符,您可以使用special_characters.includes(targetChar)

答案 1 :(得分:0)

这是一个检查密码功能,将抛出错误或返回true,如果需要,您可以删除所有错误抛出并替换为return false。 那应该对你有帮助。 (未经测试,甚至没有在IDE中完成,只是为您快速完成)

function checkPassword(pw="") {
    const special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;,'\[\]]"
    pw=pw.split("")
    if (pw.length < 8)
        throw new Error("Password Length")
    if (!pw.some(c => special_characters.includes(c)))
        throw new Error("No special char")
    if (!pw.some(c => (c.charCodeAt(0) > 47 && c.charCodeAt(0)) < 58))
        throw new Error("No number")
    if (!pw.some(c => ((c.charCodeAt(0) > 64 && c.charCodeAt(0) < 91) || (c.charCodeAt(0) > 96 && c.charCodeAt(0) < 123))))
        throw new Error("No letter")
    return true
}