需要 URI 模板的正则表达式 (RFC 6570)

2024-01-03

我需要验证一个字符串以确保它是有效的符合 RFC 6570 的 URI 模板 https://www.rfc-editor.org/rfc/rfc6570. This should使用正则表达式就很容易了。然而,我没有找到 - URI 模板真的没有正则表达式吗?

上下文:我想在使用 node.js 处理的 JSON 模式中使用它。


虽然有点晚了,但由于唯一的答案没有解决 URI 模板的正则表达式问题,因此我决定尝试一下,因为我也找不到。这仅基于 ABNF 规则RFC 6570 第 2 节 https://www.rfc-editor.org/rfc/rfc6570#section-2我添加了一些 ASCII 艺术来绘制不同的组件。

^([^\x00-\x20\x7f"'%<>\\^`{|}]|%[0-9A-Fa-f]{2}|{[+#./;?&=,!@|]?((\w|%[0-9A-Fa-f]{2})(\.?(\w|%[0-9A-Fa-f]{2}))*(:[1-9]\d{0,3}|\*)?)(,((\w|%[0-9A-Fa-f]{2})(\.?(\w|%[0-9A-Fa-f]{2}))*(:[1-9]\d{0,3}|\*)?))*})*$
  \                            \_____________/ \\____________/ \\__________________/    \__________________/ /\________________/ /  \_________________________________________________________________/ //
   \                            pct-encoded /   \   operator    \\     varchar                varchar       /  modifier-level4  /                               varspec                                //
    \______________________________________/     \               \\________________________________________/                   /                                                                      //
                    literals                      \               \                varname                                    /                                                                      //
                                                   \               \_________________________________________________________/                                                                      //
                                                    \               \                        varspec                                                                                               //
                                                     \               \____________________________________________________________________________________________________________________________//
                                                      \                                                                   variable-list                                                           /
                                                       \_________________________________________________________________________________________________________________________________________/
                                                                                                                   expression

你可以在以下网站查看正则表达式101.com https://regex101.com/r/DstcXC/1/。这应该适用于 JSON Schema,因为我使用的是 ECMA 语法。可能还可以进行一些简化,但正如我所说,这与 ABNF 一致,所以应该是相对地如果您熟悉该规范,那么很容易遵循。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要 URI 模板的正则表达式 (RFC 6570) 的相关文章

随机推荐

  • 通过提交消息搜索 Gerrit

    我们的团队使用的标准是在所有提交消息前加上 bz12345 前缀 其中 12345 被您正在处理的错误替换 我希望能够搜索具有该错误编号的所有提交 我读了http gerrit googlecode com svn documentatio
  • 如何删除 LISP 中的嵌套括号

    如何在 Common LISP 中递归地删除嵌套括号 例如 unnest a b c d e f g gt a b c d e f g unnest a b gt a b unnest a gt a Thanks 这就是我要做的 ql qu
  • Google App Engine 和 Google Sheets 超出软内存限制

    我正在编写一个简单的服务 从多个来源获取数据 将其组合在一起 然后使用 Google API 客户端将其发送到 Google Sheet Easy peasy 效果不错 数据不是那么大 问题是在构建 api 服务后调用 spreadshee
  • Java中如何比较两个双精度值?

    在 Java 中对两个双精度值进行简单比较会产生一些问题 让我们考虑以下 Java 中的简单代码片段 package doublecomparision final public class DoubleComparision public
  • 集成服务目录文件夹权限已更改

    问 SSISDB 或 MSDB 中的任何 SQL Server 系统表是否包含可让我发现哪些用户正在对 Integration Services 目录中的文件夹权限进行更改的信息 背景 我发现 SQL 代理作业失败 错误描述如下 无法访问该
  • React SSR:文档未定义

    我已经为此工作两天了 浏览了多个堆栈帖子 仍然没有找到合适的答案 我正在尝试在服务器中渲染我的反应项目 如下所示 服务器 js function handleRender req res const sheetsRegistry new S
  • 为什么通过蜂窝网络下载图像时总是出现 NSURLConnection 超时?

    我的应用程序似乎在蜂窝网络上运行得非常糟糕 用户界面通常有旋转器而不是图像 但并非总是如此 它使用由并发 NSOperations 驱动的 NSURLConnections 它在 WIFI 上运行良好 完全没有问题 我发现我遇到了很多 NS
  • 查找WPF应用程序中所有打开的弹出窗口

    WPF 具有 Popup 类 您可以使用它在另一个窗口中打开一个 小 窗口 例如 这用于工具提示或组合框 我需要找到当前在 WPF 窗口中打开的所有这些弹出窗口 以便我可以关闭它们 如果有人还需要 public static IEnumer
  • Git 日志格式漂亮,如果非空则在占位符后换行

    我有一个使用漂亮格式的日志的 git 别名 lg log 10 graph abbrev commit pretty format C auto d Creset n C bold yellow h Creset s Cgreen cr C
  • 在 Yii2 中更新图像

    在使用 Yii2 更新图像时 我遇到了验证问题 它总是要求我上传图像 但我不想要这个 没有必要总是更新图像 I tried skipOnEmpty但它不能正常工作 它会在上传照片时产生影响 这也是不正确的 请帮忙 Model public
  • SystemJS 和 Webpack 之间有什么区别?

    我正在创建我的第一个 Angular 应用程序 我会弄清楚模块加载器的作用是什么 为什么我们需要它们 我尝试在 Google 上搜索啊搜索 但我不明白为什么我们需要安装其中之一来运行我们的应用程序 仅仅使用还不够吗import从节点模块加载
  • 无法在 Dot Net Core 中使用 System.Management.dll

    如果出现以下情况 我应该如何收集硬件信息 System Management dll不兼容点网核心 如何获取机器信息 如处理器 ID 磁盘卷号等 NET Core 3 现在支持 System Management 截至目前 NET Core
  • 413 请求实体太大 nginx django

    我正在制作一个练习Web服务 客户端的画册显示网站 客户端可以将画册图像上传到服务器 但是当客户端上传太多图片时出现以下错误 413 Request Entity Too Large 我尝试添加client max body size 10
  • 如果发送者未处于焦点且不知道目标窗口,则模拟键盘事件[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个媒体播放器控制器 该控制器在后台运行时工作 并且不知道是否有任何接收器 就像按键盘上的某个键一样next track媒体键 我尝试过使用keybd event SendInput or http
  • 尝试运行“flutter Upgrade”时出错

    我正在尝试升级我的 Flutter SDK 并将我的 Flutter 频道更改为master 但我遇到以下错误 git error Your local changes to the following files would be ove
  • 禁止在 POST 中保存对象 - Django Rest Framework

    这与问题相关 Django REST 框架序列化器中 GET 和 POST 的不对称性质 https stackoverflow com questions 24714108 assymetric nature of get and pos
  • 如何在 javascript 定义中的 haml 中运行 ruby​​?

    如何在 haml 的 javascript 中运行 ruby 代码 如果我使用var message 在我的例子中我得到undefined local variable or method message 当我移动时 message it
  • pandas:删除另一个系列的时间索引的时间间隔内的所有行(即时间范围排除)

    假设我有两个数据框 df1 time 2016 09 12 13 00 00 017 1 0 2016 09 12 13 00 03 233 1 0 2016 09 12 13 00 10 256 1 0 2016 09 12 13 00
  • 启动后台进程的最佳方式是什么,稍后可以访问

    我目前正在开发一个提供可执行文件的 RubyGem 该可执行文件使用 FSSM gem 跟踪某些日志文件的状态 该可执行文件应该启动 在后台执行某些操作 然后停止 例如 my executable start do something di
  • 需要 URI 模板的正则表达式 (RFC 6570)

    我需要验证一个字符串以确保它是有效的符合 RFC 6570 的 URI 模板 https www rfc editor org rfc rfc6570 This should使用正则表达式就很容易了 然而 我没有找到 URI 模板真的没有正