php - URL 子部分序列中不能只有数字
问题描述
我想更改正则表达式,以便如果类组在两个斜杠之间没有只有数字,则它匹配:
$regex = "~^upload/(?<class>[/a-z0-9_\.]+)/(?<id_table>\d+)$~";
preg_match($regex, "upload/.bes/.ur/13"); // returns true
preg_match($regex, "upload/.tables/fewf/.u23ser/15"); // returns true
preg_match($regex, "upload/.t/les2/.uer/11"); // returns true
preg_match($regex, "upload/1.tales/.user2/01"); // returns true
preg_match($regex, "upload/23/21"); // returns false
preg_match($regex, "upload/.tables/00/31"); // returns false
preg_match($regex, "upload/6/.uer/q/51"); // returns false
解决方案
您可以使用所有格量词从 digit 类开始重写您的命名捕获:
(?<class>\d*+[a-z0-9_.]+(?>/\d*+[a-z0-9_.]+)*)
由于量词是所有格,因此您确定与之匹配的第一个字符[a-z0-9_.]+
不是数字。
推荐阅读
- python - 只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数数组是有效索引
- google-apps-script - 谷歌脚本“发送电子邮件失败:没有收件人”但电子邮件到达
- javascript - 当 Jquery 参数设置为 5 时,Slider 中的幻灯片无响应
- php - 使用连接 codeigniter 的求和查询
- javascript - 根据变量的值更改道具值
- javascript - 在这种情况下,不允许将元素 bloquote 作为元素 div 的子元素
- javascript - 缩放小于 div 尺寸的图像并使用 jQuery Zoom 指定缩放范围
- vue.js - 为多个模板使用一个 Vue 组件
- apache-nifi - 如何使用 apache nifi 拆分 xml 文件?
- python - 以最 Pythonic 的方式仅获取迭代器的最后一个元素