字母数字字符的django表单字段正则表达式验证
django form field regex validation for alphanumeric characters
我有一个 django 表单,其中包含一个密码字段,我想验证该字段是否必须包含字母和数字的组合。
class AuthorizationForm(forms.Form):
email = forms.CharField()
password = forms.CharField(min_length=7)
我正在这样验证密码字段:
def clean_password(self):
password = self.cleaned_data['password']
if not re.match(r'^[A-Za-z0-9]+$', password):
raise forms.ValidationError("Password should be a combination of Alphabets and Numbers")
这段代码对我不起作用,它允许 abcdefghij
或 123456789
或 abcd123456
,而我只想允许 abcd123456
正则表达式并不是必需的,您可以简单地使用字符串函数来执行此操作:
import string
def validate(password):
letters = set(string.ascii_letters)
digits = set(string.digits)
pwd = set(password)
return not (pwd.isdisjoint(letters) or pwd.isdisjoint(digits))
print(validate('123123')) # False
print(validate('asdfsdf')) # False
print(validate('12312sfdf')) # True
您可以使用 RegexValidator
,即 django builtin validator。
试试下面的代码:
from django.core.validators import RegexValidator
class AuthorizationForm(forms.Form):
email = forms.CharField()
password = forms.CharField(
min_length=7,
validators=[
RegexValidator(
'^(\w+\d+|\d+\w+)+$',
message="Password should be a combination of Alphabets and Numbers"
)
]
)
我有一个 django 表单,其中包含一个密码字段,我想验证该字段是否必须包含字母和数字的组合。
class AuthorizationForm(forms.Form):
email = forms.CharField()
password = forms.CharField(min_length=7)
我正在这样验证密码字段:
def clean_password(self):
password = self.cleaned_data['password']
if not re.match(r'^[A-Za-z0-9]+$', password):
raise forms.ValidationError("Password should be a combination of Alphabets and Numbers")
这段代码对我不起作用,它允许 abcdefghij
或 123456789
或 abcd123456
,而我只想允许 abcd123456
正则表达式并不是必需的,您可以简单地使用字符串函数来执行此操作:
import string
def validate(password):
letters = set(string.ascii_letters)
digits = set(string.digits)
pwd = set(password)
return not (pwd.isdisjoint(letters) or pwd.isdisjoint(digits))
print(validate('123123')) # False
print(validate('asdfsdf')) # False
print(validate('12312sfdf')) # True
您可以使用 RegexValidator
,即 django builtin validator。
试试下面的代码:
from django.core.validators import RegexValidator
class AuthorizationForm(forms.Form):
email = forms.CharField()
password = forms.CharField(
min_length=7,
validators=[
RegexValidator(
'^(\w+\d+|\d+\w+)+$',
message="Password should be a combination of Alphabets and Numbers"
)
]
)