具有特定要求的python正则表达式

时间:2014-11-12 15:45:23

标签: regex python-2.7

我有这段代码:

#!/usr/local/bin/python
# coding: utf-8

import re
logins = [u"idr.kjh-kf0", u"8idr.kjh-kf0", u"idr.kjh-kfй", u"Idr.kjh*kf0", u"inhdrkjghrdkgjhdrkgjhrgkj"]
regex = re.compile(r"[^\d{1}]+[\w{1}|\d{1}]$")

for login in logins:
    if regex.match(login):
        print login.encode('utf-8')

我需要通过正则表达式检查每个字符串,它们匹配这些参数:

  • 第一个符号只是字母
  • 最后一个符号是字母或数字
  • 在所有允许字母,数字,点和连字符的中间。
  • 总长度为20个符号

我请求匹配这些参数的正则表达式

2 个答案:

答案 0 :(得分:1)

使用docs,我们可以弄明白:

  • 第一个符号是一个字母:^[A-Za-z]
  • 最后一个符号是字母或数字:[0-9A-Za-z]$
  • 中间字母,数字,点和连字符:[0-9A-Za-z\-\.]
  • 总长度为20个符号:x{,20}表示x 0到20次

现在只需汇总一下:re.compile('^[A-Za-z][0-9A-Za-z.-]{,18}[0-9A-Za-z]$')

答案 1 :(得分:0)

^[a-zA-Z][a-z0-9A-Z.-]{18}[a-zA-Z0-9]$

试试这个。看看演示。

http://regex101.com/r/kP8uF5/2