【问题标题】:python regex with specific requirements具有特定要求的python正则表达式
【发布时间】:2014-11-12 15:45:22
【问题描述】:

我有这个代码:

#!/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 个符号

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

【问题讨论】:

  • 问题是什么?
  • 已更新。我需要匹配请求参数的正则表达式。

标签: regex python-2.7


【解决方案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]$')

【讨论】:

  • 谢谢。看来我不够聪明,无法自己弄清楚。
【解决方案2】:
^[a-zA-Z][a-z0-9A-Z.-]{18}[a-zA-Z0-9]$

试试这个。查看演示。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多