正则表达式匹配路由的实现代码

 更新时间:2019-04-17 21:42:55   作者:佚名   我要评论(0)

在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问
具体实现步骤为:

导入转换

在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问

具体实现步骤为:

  • 导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录
  • 自定义转换器:自定义类继承于转换器基类
  • 添加转换器到默认的转换器字典中
  • 使用自定义转换器实现自定义匹配规则

代码实现

导入转换器基类

from werkzeug.routing import BaseConverter

自定义转换器

# 自定义正则转换器
class RegexConverter(BaseConverter):
  def __init__(self, url_map, *args):
    super(RegexConverter, self).__init__(url_map)
    # 将接受的第1个参数当作匹配规则进行保存
    self.regex = args[0]

添加转换器到默认的转换器字典中,并指定转换器使用时名字为: re

app = Flask(__name__)
# 将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: re
app.url_map.converters['re'] = RegexConverter

使用转换器去实现自定义匹配规则

当前此处定义的规则是:3位数字

@app.route('/user/<re("[0-9]{3}"):user_id>')
def user_info(user_id):
  return "user_id 为 %s" % user_id

  运行测试:http://127.0.0.1:5000/user/123 ,如果访问的url不符合规则,会提示找不到页面

系统自带转换器

DEFAULT_CONVERTERS = {
  'default':     UnicodeConverter,
  'string':      UnicodeConverter,
  'any':       AnyConverter,
  'path':       PathConverter,
  'int':       IntegerConverter,
  'float':      FloatConverter,
  'uuid':       UUIDConverter,
}

系统自带的转换器具体使用方式在每种转换器的注释代码中有写,要注意每种转换器初始化的参数。

总结

以上所述是小编给大家介绍的正则表达式匹配路由的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

您可能感兴趣的文章:

  • 正则表达式模式匹配字符串基础知识
  • 正则表达式匹配(URL、电话、手机、邮箱)的实例代码
  • Python时间的精准正则匹配方法分析
  • Java使用正则表达式匹配获取链接地址的方法示例
  • Python正则表达式非贪婪、多行匹配功能示例
  • PHP正则匹配中英文、数字及下划线的方法【用户名验证】
  • 正则表达式中最短匹配模式的用法浅析
  • JS匹配日期和时间的正则表达式示例

相关文章

  • 正则表达式匹配路由的实现代码

    正则表达式匹配路由的实现代码

    在 web 开发中,可能会出现限制用户访问规则的场景,那么这个时候就需要用到正则匹配,根据自己的规则去限定请求参数再进行访问 具体实现步骤为: 导入转换
    2019-04-17
  • PHP PDO数据库操作预处理与注意事项

    PHP PDO数据库操作预处理与注意事项

    PDO(PHP Database Object)扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致
    2019-04-17
  • Laravel事件监听器用法实例分析

    Laravel事件监听器用法实例分析

    本文实例讲述了Laravel事件监听器用法。分享给大家供大家参考,具体如下: 这里讲述最佳实践方案,分以下步骤: 第一步:注册事件和监听器。 在EventServiceP
    2019-04-17
  • 浅谈正则速记法的技巧

    浅谈正则速记法的技巧

    给你一篇文章,如何挑选出你想要的字符串呢?你可以从左到右从上到下,一个一个字符读取出来,写一大堆if做判断。这样太麻烦了,正则就是将以上过程抽象出来,
    2019-04-17
  • PHP精确到毫秒秒杀倒计时实例详解

    PHP精确到毫秒秒杀倒计时实例详解

    精确到毫秒秒杀倒计时PHP源码实例,前台js活动展示倒计时,后台计算倒计时时间。每0.1秒定时刷新活动倒计时时间。 PHP: // 注意:php的时间是以秒算。
    2019-04-17
  • Asp.net core中实现自动更新的Option的方法示例

    Asp.net core中实现自动更新的Option的方法示例

    Asp.net core可以监视json、xml等配置文件的变化, 自动刷新内存中的配置内容, 但如果想每隔1秒从zookeeper、consul获取最新的配置信息, 需要自己实现. 阅读了
    2019-04-17
  • JS 正则表达式从地址中提取省市县

    JS 正则表达式从地址中提取省市县

    直接上代码,一看就懂, 一般国内地址返回Array前三项就是省市县,若要扩展到社区、街道等可自行扩展。 var add1 = '四川省成都市都江堰市天马镇34号';
    2019-04-17
  • Laravel框架实现的使用smtp发送邮件功能示例

    Laravel框架实现的使用smtp发送邮件功能示例

    本文实例讲述了Laravel框架实现的使用smtp发送邮件功能。分享给大家供大家参考,具体如下: 1、.env文件中配置 MAIL_DRIVER=smtp MAIL_HOST=smtp.邮箱后缀
    2019-04-17
  • 解决正则表达式\w和\d的疑惑

    解决正则表达式\w和\d的疑惑

    <&#63;php $string='April15,2003'; $pattern='/(\w+)(\d+),(\d+)/i'; $replacement='${1},${3}'; echo preg_replace($pattern,$replacement,$string); &#6
    2019-04-17
  • js正则表达式 匹配两个特定字符间的内容示例

    js正则表达式 匹配两个特定字符间的内容示例

    1、js截取两个字符串之间的内容: var str = "aaabbbcccdddeeefff"; str = str.match(/aaa(\S*)fff/)[1]; alert(str);//结果bbbcccdddeee 2、js截取某个
    2019-04-17

最新评论