我正在尝试将此代码移植到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']);
}
答案 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
}