Javascript Regex替换url中的子目录

标签 javascript regex

我正在尝试匹配特定目录之后的 URL 中的子目录:

然后将目录附加到匹配的字符串。

/applications/app1 应该是 /applications/app1/beta

/applications/app2/ 应该是 /applications/app2/beta/

/applications/app2/settings 应该是 /applications/app2/beta/settings

/applications/app3?q=word 应该是 /applications/app3/beta?q=word

我是这样写的:

path = path.replace(/(\/applications\/(.*)(\/|\s|\?))/, '$1/beta');

但如果 app-name 在字符串的末尾则不起作用。

注意:我不知道应用名称我只知道它跟在/applications/

最佳答案

path.replace(/(\/applications\/[^/?]+)/g,'$1/beta');

经过深思熟虑,我更喜欢下面的:

path.replace(/(\/applications\/[^/?]+)($|\/|\?)(?!beta)/g,'$1/beta$2');

"/applications/app1/beta"      -> "/applications/app1/beta"
"/applications/app1"           -> "/applications/app1/beta"
"/applications/app1/settings"  -> "/applications/app1/beta/settings"
"/applications/app1?q=123"     -> "/applications/app1/beta?q=123"

匹配时会忽略/applications/beta

关于Javascript Regex替换url中的子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451455/

相关文章:

python - 是否有 logstash 的 grok 功能的任何 Python 实现?

python - 在 % 之后删除文本文件中的部分行,除非在 python 中前缀为\

regex - Grok 调试器和 Logstash grok 中的不同行为

javascript - 如何在 Chrome 开发工具中使用附加行断点标记?

javascript - Angular 4 - 在正确的时间初始化外部库

javascript - 强制 javascript 变量作为 "value"传递

javascript - onclick 不适用于 Chrome 扩展?

javascript - three.js:使用 textureloader 加载 svg 从 r78 开始不起作用

Javascript将正则表达式与类名匹配并返回数组中的innerHTML值

JavaScript 正则表达式 : What am I replacing?