javascript - 如何使用正则表达式将 url 路径与可选元素进行匹配

标签 javascript regex url path pattern-matching

我正在使用自定义 URL 路径,我想将其映射到对象中。

我的映射如下所示:

browser://{A}/{B}/{C}/{D}/

其中 {C}{D} 是可选的。因此路径可能如下所示:

"browser://call/register/ss/hello"
"browser://call/request/"

我希望将路径作为对象ala使用

 elems = {
   A: call,
   B: register,
   C: ss,
   D: hello
 }

但现在我什至无法让正则表达式工作......这就是我正在尝试的:

 var re = /^browser:\/\/([\w\W]+)[\/+]([\w\W]+)[\/+]([\w\W]*)[\/*]([\w\W]*)[\/*]/;
 console.log(re.exec("browser://call/register/ss/hello"));

这似乎只有在我包含完整路径时才有效。但是当我离开 {C}{D} 时,我的正则表达式失败了。

问题
如何将 {C}{D} 设为可选?有没有一种简单的方法可以将结果数组转换为对象?

感谢您的帮助!

最佳答案

尝试这个正则表达式

^(browser:\/)(\/([\w\d]+)){2,4}$

regexpal 上测试

如果您允许尾随斜杠,您可以尝试此操作

^(browser:\/\/)(([\w\d]+)\/){2,4}$

如果您需要利用 javascript 正则表达式引擎为您提取匹配的元素,或者使用更复杂的正则表达式

^(browser:\/\/)(([\w\d]+)\/)(([\w\d]+)\/)(([\w\d]+)\/)?(([\w\d]+)\/)?$

Fiddle

关于javascript - 如何使用正则表达式将 url 路径与可选元素进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984059/

相关文章:

javascript - 使用 Angular.js 选中复选框时如何设置输入字段值

javascript - Vue - 仅当您连续按两次键时才触发事件

正则表达式直到括号第一次出现为止

regex - Perl 正则表达式重复匹配

css - 使用 css 的 url 幻灯片

javascript - 如何监控html下载事件?

javascript - JQuery 和 AJAX - 页面刷新后获取请求

regex - 条形码的正则表达式(12 或 14 位)

android - Android 中的自定义 URL 处理?你能在 iOS 中做同样的事情吗?

python - 如何将 URL 链接嵌入到 QLabel