上下文
我的代码采用网址路径并用' *'替换路径参数。 我的所有网址都遵循JSON API命名惯例。 所有有效的网址资源部分都遵循下一条规则:
传递参数通常是一个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