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

Gra*_*ntU 2 python regex

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

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

这是我到目前为止:

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

    if rule.search(value):
        msg = u"Does not validate"
        raise ValidationError(msg)
Run Code Online (Sandbox Code Playgroud)

pok*_*oke 5

re.compile('[A-Z0-9][A-Z0-9-]{1,14}[A-Z0-9]', re.I)
Run Code Online (Sandbox Code Playgroud)

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

  • @ User7 - 注意连字符*必须*是`[]`表达式中的最后一个字符才能匹配自身. (2认同)