regex - Apache URL 重写 UUID v1
问题描述
如何使用 RewriteRule 通过最大检查精确地重写 36 个字符的v1 UUID ?
UUID() returns a value that conforms to UUID version 1 as described in RFC 4122. The value is a 128-bit number represented as a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format:
请提供比这更好的东西:
RewriteRule ^([A-z0-9\-]{36})$ index.php?uuid=$1 [L,QSA]
解决方案
你可以试试:
^[a-fA-F0-9]{8}-(?:[a-fA-F0-9]{4}-){3}[a-fA-F0-9]{12}$
上述正则表达式的解释:
^, $
- 分别代表行的开始和结束。[a-fA-F0-9]{8}
- 根据文档;作为五个十六进制数字的 utf8 字符串;所以最好只允许十六进制字符。所以; 之前的第一个字符串-
是 8 个字符长的十六进制值。(?:[a-fA-F0-9]{4}-){3}
- 表示一个非捕获组匹配 16 进制字符 4 次后跟 a-
并且整个模式正好重复 3 次。[a-fA-F0-9]{12}
- 正好代表十六进制字符 12 次。$0
- 对于匹配部分,您可以使用第 0 个捕获组,因为没有特殊捕获。
正则表达式演示
推荐阅读
- json - Parse json file with variable length in Swift
- cmake - CMAKE:找到一个共享(模块)库
- c# - 关于VS2017参考中参数processorArchitecture的问题
- postgresql - Postgres 中的数组字段与字符变化性能
- package - 如何使用“添加”命令更改下载包的默认保存位置?
- javascript - 使用 JS 将 html 数据保存到 .xlsx
- java - 配置为监听 127.0.0.1 时无法访问在 Docker 容器中运行的 Tomcat
- compression - 压缩文件(例如 zip 或 7z)然后使用奇偶校验生成器再次扩展以进行文件恢复是否有意义?
- c# - 使用现有的 ml.net 模型进行预测,使用 json 作为模型输入
- javascript - 如何在同步等待的同一函数中使用 fetch 和 fetch 的结果