我一直在与Django和RegexValidator一起工作,但我只想以DDDDD或DDDDD-DDDD的格式保存有效的美国邮政编码。

我在模型中设置了以下变量:

zip = models.CharField(
    max_length=10,
    null=True,
    blank=True,
    help_text=_("Zipcode"),
    validators=[RegexValidator(
        regex=r'^(^[0-9]{5}(?:-[0-9]{4})?$)?$)',
        message=_(u'Must be valid zipcode in formats 12345 or 12345-1234'),
    )],
)

在这一点上,我正在尝试创建一个正则表达式,它也将保存空字符串。我尝试查看以下问题RegEx for 5 digit zip or empty
Regex empty string or email
并尝试添加“|”之前,还有一个“?”在最后。

还有其他建议吗?

最佳答案

我相信您只想将此作为您的正则表达式:^(^[0-9]{5}(?:-[0-9]{4})?$|^$)
它与5位数字字符串,后跟一个破折号和4位数字或一个空字符串匹配。

这是在online regex tester中测试的

关于regex - RegexValidator for Zipcodes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31326782/

10-11 01:36