0

我想要正则表达式搜索和替换如下:

  • 输入字符串以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 重写中使用它。

4

3 回答 3

0

Give this a try:

text.replace(/[\w-]+(?=(images|videos|friends))/, 'user-').replace(/[\w-]+-(?!(images|videos|friends))\w*/, 'user-profile')
于 2013-03-15T19:29:11.350 回答
0

不要使用 .replace(),而是考虑在条件中使用 .match() 或 .test(),并分别处理不匹配的情况。

于 2013-03-15T19:10:24.820 回答
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

现场演示:http: //ideone.com/MVRcku

于 2013-03-15T19:34:50.127 回答