用于匹配3个和16个字符的Python正则表达式

时间:2013-05-17 10:37:13

标签: python regex

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

字符串 3到16个字符长且字母数字或包含连字符(但不是第一个或最后一个字符

这是我到目前为止所做的:

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

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

2 个答案:

答案 0 :(得分:5)

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

这将在开头和结尾处接受字母数字字符,并且在它们之间需要1个14个字母数字或超级字符。

答案 1 :(得分:3)

您可以使用format来缩短它:

'{0}({0}|-){1}{0}'.format('[a-zA-Z0-9]','{1-14}')
如果对整个查询固有的不区分大小写的要求,那么@ pke的版本会更好。