我是正则表达式的新手,我正试图在Python中生成以下条件。
字符串 3到16个字符长且字母数字或包含连字符(但不是第一个或最后一个字符)
这是我到目前为止所做的:
rule = re.compile(r'(^{0,16})')
if rule.search(value):
msg = u"Does not validate"
raise ValidationError(msg)
答案 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的版本会更好。