我想要正则表达式搜索并替换如下:
images
,videos
,friends
结尾
profile
输入/输出示例:
/john-smith-images
- > /user-images
/john-smith-videos
- > /user-videos
/john-smith
- > /user-profile
我试过这个正则表达式,它捕获后缀,如果存在的话:
/.+?(images|videos|friends)?$/
我 仅限于一个正则表达式 和 仅正则表达式 。我需要在mod_rewrite / IIRF / IIS URL重写中使用它。
答案 0 :(得分:0)
不考虑使用.replace(),而是考虑在条件内使用.match()或.test(),并分别处理不匹配的情况。
答案 1 :(得分:0)
尝试一下:
text.replace(/[\w-]+(?=(images|videos|friends))/, 'user-').replace(/[\w-]+-(?!(images|videos|friends))\w*/, 'user-profile')
答案 2 :(得分:0)
使用String#replace和回调,如下所示:
var regexp = /.+?(images|videos|friends|)$/;
function cb ($0, $1) {
r = $1 ? $1 : 'profile';
return '/user-' + r;
}
console.log("/john-smith-images".replace(regexp, cb));
console.log("/john-smith-videos".replace(regexp, cb));
console.log("/john-smith".replace(regexp, cb));
<强>输出:强>
/user-images
/user-videos
/user-profile