我有像下面这样的网址与客户ID等。我想删除他们,并把一个星号代替他们。下面的例子会给你一个更好的想法。
/paas/service/3.0/part/d878bc1e-9bb8-4a0e/log/account/7367c100-9390-11e3/resource/AdminHistory --> /paas/service/3.0/part/*/log/account/*/resource/AdminHistory
/hs/service/3.0/bootstrap/mnd/3388959354 --> /hs/service/3.0/bootstrap/mnd/*
/paas/service/3.0/part/d878bc1e-9bb8-4a0e-b224-a4ba0d7dfcec/asset --> /paas/service/3.0/part/*/asset
/paas/service/3.0/part/3c5631df-52c9/servicepolicy/8ee6ba08-8d7a/carrierPlan/c2b4a364-98e3-4546 --> /paas/service/3.0/part/*/servicepolicy/*/carrierPlan/*ID可以是数字或字母数字。我应该如何处理这个问题?
发布于 2016-10-18 08:36:34
ID可以是数字或字母数字。
您的示例URL中的所有部分都包含字母或数字,因此您需要知道ID之前的文本是什么,以便您可以针对该ID加上后面的ID。
所以可能是这样的:
function modifyURL(url) {
return url.replace(/(\/(?:part|account|mnd|servicepolicy|carrierPlan)\/)[^\/]+/g, "$1*");
}
console.log(modifyURL("/paas/service/3.0/part/d878bc1e-9bb8-4a0e/log/account/7367c100-9390-11e3/resource/AdminHistory"));
console.log(modifyURL("/hs/service/3.0/bootstrap/mnd/3388959354"));
console.log(modifyURL("/paas/service/3.0/part/d878bc1e-9bb8-4a0e-b224-a4ba0d7dfcec/asset"));
console.log(modifyURL("/paas/service/3.0/part/3c5631df-52c9/servicepolicy/8ee6ba08-8d7a/carrierPlan/c2b4a364-98e3-4546"));
为了解释我使用的正则表达式:
( // start of capturing submatch
\/ // match a forward slash
(?: // start of non-capturing group
part|account|mnd|servicepolicy|carrierPlan // match one of those words
) // end of non-capturing group
\/ // match forward slash
) // end of capturing submatch
[^\/]+ // match one or more of anything but a forward slashhttps://stackoverflow.com/questions/40097673
复制相似问题