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

标签 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 和这些特殊字符组成的字符串:+、_、-、""(空格)

最佳答案

您的正则表达式仅测试字符串的开头 - 实际上它仅测试字符串的第一个字符。如果 [0-9\-\+_ ] 是您想要的整个字符串,那么在末尾添加一个 +$:

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

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

关于python - 为什么我的正则表达式也接受字母? ^[0-9\-\+_],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477625/

相关文章:

Python Pandas 绘制具有重复元素的图

python - Django 消息框架未在模板中显示消息

javascript - Javascript 中不区分大小写的文本内容

javascript - 字符串上的正则表达式或 For 循环 - 拆分和连接

django - 如何安装 gviz_api 库?

python - Django 中同一模型的 UpdateView 的不同模板

python - 在字典中存储和检索图像 - python

python - 自定义flask-security的@auth_token_required未经授权的响应

python - 将txt文件中的非均匀数据加载到mysql数据库中

regex - 为什么行的开头是 "^"行的结尾是 "$"?