【问题标题】:Django RegexField Letters and Numbers onlyDjango RegexField 仅限字母和数字
【发布时间】:2011-04-19 02:46:40
【问题描述】:

我需要一个 django 形式的正则表达式,只接受字母和数字,没有别的。这个我试过了,还是不行:

myfield = forms.RegexField(label=("My Label"), max_length=31, regex=r'[a-zA-Z0-9]',
        error_message = ("This value must contain only letters and numbers."),

我不太擅长使用正则表达式。你能告诉我我在这里做错了什么以及如何解决它吗?

【问题讨论】:

    标签: python regex django


    【解决方案1】:

    正则表达式=r'[a-zA-Z0-9]',

    是一个字母。

    您想要多个字母吗?然后使用重复

    正则表达式=r'[a-zA-Z0-9]+',

    有很多关于正则表达式的教程。请谷歌“正则表达式教程”。

    【讨论】:

    • 我为它做了谷歌,因此我想出了解决方案。但这显然是不正确的。使用您的解决方案:regex=r'[a-zA-Z0-9]+',我仍然可以使用下划线,知道为什么吗?
    • 因为。您的模式没有指定整个字符串。你需要^$。 “我为此做了谷歌”。那就继续努力吧。有很好的教程可以帮助你。
    • 那你的答案也不正确,只是注意到......也不需要粗鲁。
    【解决方案2】:
    regex=r'^[a-zA-Z0-9]+$',
    

    这将只接受字母和数字,并且至少需要一个符号

    【讨论】:

      【解决方案3】:

      您所说的“它不起作用”是什么意思?能说的具体点吗?

      我可以立即发现的一个“错误”是它只接受一个字符。您在 regex 参数中缺少重复项。尝试在末尾添加*+(有关详细信息,请参阅python 的re 模块文档。

      【讨论】:

      • 它不起作用意味着表单没有正确验证。就像我输入“asdasdf”一样,它仍然会引发验证错误。
      • 我想通了。最后我需要胡萝卜和美元符号: regex=r'^[a-zA-Z0-9]+$',
      • @bababa:这是插入符号,不是胡萝卜:)
      猜你喜欢
      • 1970-01-01
      • 2013-01-12
      • 2023-01-18
      • 2016-07-24
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      相关资源
      最近更新 更多