为什么我的正则表达式也接受字母? ^ [0-9 \ - \ + _]

时间:2016-05-27 07:41:11

标签: python regex django

为什么我的regex也接受信件?例如:

  • test123 - 它有效(显示错误信息)
  • 123abc - 不工作(不显示错误信息)

    test = forms.RegexField(
        max_length=15,
        regex=r'^[0-9\-\+_ ]',
        error_message=_(u"Only digits0-9 and +, _, -"),
        required=True,
        label=_(u'Test'))
    

它应该接受由0-9和这些特殊字符组成的字符串:+,_, - ,“”(空格)

1 个答案:

答案 0 :(得分:4)

你的正则表达式只测试字符串的开头 - 实际上它只测试字符串的第一个字符。如果您想要在整个字符串中使用[0-9\-\+_ ],那么请在最后添加+$

regex=r'^[0-9\-\+_ ]+$'

这表示整个字符串从头到尾只允许包含方括号内的字符。