我需要验证一个字符串以确保它是有效的符合 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(使用前将#替换为@)