url资源部分

时间:2018-05-11 15:12:50

标签: javascript regex parsing url

上下文

我的代码采用网址路径并用' *'替换路径参数。 我的所有网址都遵循JSON API命名惯例。 所有有效的网址资源部分都遵循下一条规则:

  • 会员名称应该以字符“a-z”(U + 0061)开头和结尾 到U + 007A)
  • 会员名称应该只包含字符“a-z” (U + 0061到U + 007A),“0-9”(U + 0030到U + 0039),连字符减去 (U + 002D HYPHEN-MINUS,“ - ”)作为多个单词之间的分隔符。

传递参数通常是一个id(数字,uuid,guid等)。

以下是几个转换的例子:

  • /user/e09e4f9f-cfcd-4a23-a88f-b9f2f265167f/info -> /user/*/info
  • /user/e09e4f9f-cfcd-4a23-a88f-b9f2f265167f -> /user/*
  • /user/1 -> /user/*

我有什么

/^[a-z][a-z0-9-]*[a-z]$/

问题在于它没有将uuid作为路径参数来处理。

这是我解析网址的功能(抱歉没有时间创建一个jsfiddle):

const escapeResourcePathParameters = resource => resource
  .substr(resource.startsWith('/') ? 1 : 0)
  .split('/')
  .reduce((url, member) => {
     const match = member.match(REGEX.JSONAPI_RESOURCE_MEMBER);

     const part = match
         ? member
         : '*';

     return `${url}/${part}`;
}, '');

问题

我需要一个遵循上述规则的正则表达式,并且适用于上面的示例。

UPD: 我添加了用于解析网址的功能。要测试您的正则表达式,只需将其替换为REGEX.JSONAPI_RESOURCE_MEMBER并传递网址即可 /user/e09e4f9f-cfcd-4a23-a88f-b9f2f265167f/info,它应该返回/user/*/info

0 个答案:

没有答案