2013-05-17 27 views
2

我是新來的正則表達式,我試圖在Python中產生以下條件。匹配3和16個字符的Python正則表達式

字符串和字符與存在 含有一個連字符字母數字或(但不能作爲第一個或最後一個字符)。

這是我到目前爲止有:

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

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

您正在尋找該行的開始,連續0-16次。 – Elazar

回答

3

您可以使用format縮短它:

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

@捅的版本更好如果不區分大小寫的要求是內在整個查詢。

+0

機器製造機器。多麼乖乖! – georg

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

這將在開始和結束時接受字母數字字符,並要求在1之間太14個字母數字或連字符的字符。

+2

@ User7 - 請注意,連字符*必須是* []'表達式中的最後一個字符,以便與其匹配。 – Elazar