【问题标题】:Python (django) regular expression does not workPython(django)正则表达式不起作用
【发布时间】:2020-08-31 04:21:53
【问题描述】:

我有这样的表情:

^[0-9()|&~ ]*$

它应该通过如下字符串:'1 & 2 & 3' 或 '(4&1)|(2&3)'

但是当我输入字符串时:'1 & 2iuasjhdawiudjsa',它会传递这个字符串。然后我得到一个错误:“名称'Trueiuasjhdawiudjsa'未定义”。

怎么了?为什么 validators.RegexValidator 不会引发异常?

请帮忙!

在第三个验证器中失败。如果我删除了第 3 个验证器,那么 RegexValidator 会引发错误,这是应该的。

expression = models.CharField(
        blank=True, max_length=225,
        validators=[validators.RegexValidator('^[0-9()|&~ ]*$'),
                    validate_logical_expression,
                    check_logic_operation_positions] # fails here, when try to 
                                                     # check logic
            ]
    )

【问题讨论】:

  • Your regex does not match你提到的字符串
  • @Victor Stribizev,所以这是一个问题:正则表达式不匹配,但 RegexValidator 不返回错误,因此,程序在尝试通过第二个验证器处理字符串时失败:
  • 所以,问题不在于正则表达式,而在于你如何使用它。
  • @WiktorStribiżew,我已经编辑了这个问题。你能看出问题吗?
  • 向我们展示一个使用示例(如何保存数据)

标签: python django regex


【解决方案1】:

解决这个问题:

def check_logic_operation_positions( ...):
    try:
        ...
    except NameError:
        raise ValueError(_('invalid name'))

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多