2

我是正则表达式的新手,我正在尝试在 Python 中生成以下条件。

长度介于3 到 16 个字符之间且为字母数字或包含连字符(但不作为第一个或最后一个字符)的字符串。

这是我到目前为止所拥有的:

 rule = re.compile(r'(^{0,16})')

    if rule.search(value):
        msg = u"Does not validate"
        raise ValidationError(msg)
4

2 回答 2

6
re.compile('[A-Z0-9][A-Z0-9-]{1,14}[A-Z0-9]', re.I)

这将在开头和结尾接受字母数字字符,并且在两者之间需要 1 或 14 个字母数字或连字符字符。

于 2013-05-17T10:41:07.157 回答
3

您可以使用format它来缩短它:

'{0}({0}|-){1}{0}'.format('[a-zA-Z0-9]','{1-14}')

如果不区分大小写的要求是整个查询所固有的,@poke 的版本会更好。

于 2013-05-17T10:44:56.177 回答