繁体   English   中英

使用 JavaScript 从参数中获取 slug 值

[英]Get slug value from parameter using JavaScript

我有一个格式如下的网址:

http://www.test.com/document/navigate/{{project_id}}/{{note_id}}

{{}}内的值将用整数填充,例如像这样

http://www.test.com/document/navigate/1/3
http://www.test.com/document/navigate/7/2
http://www.test.com/document/navigate/3

url 中note_id的值不是强制性的,但我需要同时检索project_idnote_id 我怎样才能做到这一点?

您可以使用正则表达式: http[s]?:\\/\\/www.test.com\\/document\\/navigate\\/([\\d]+)[\\/]?([\\d]+)?[\\/]? .

本质上,它是对协议、主机名/域以及我们知道的路径部分进行布局。 然后有两个捕获组 - 项目 ID 和笔记 ID(可选)。

你可以像这样使用它:

const url = 'http://www.test.com/document/navigate/1/3';
const parts = url.match(/http[s]?:\/\/www.test.com\/document\/navigate\/([\d]+)[\/]?([\d]+)?/);

console.log(parts[0]); // "http://www.test.com/document/navigate/1/3"  <- full match
console.log(parts[1]); // "1"  <- first group
console.log(parts[2]); // "3"  <- second group, which will be undefined if left off

注意:这可能不是一个万无一失的答案。 我建议尝试许多其他潜在的变化。 还要注意这会返回字符串,所以如果你想要实数,你可能需要parseInt()或其他东西。

这是一个Regexr,向您展示了它是如何工作的(这就是我在做对之前的方法)。

您可以通过以下方式使用部分navigate/的一种方法:

 var url1 = 'http://www.test.com/document/navigate/1/3'; var url2 = 'http://www.test.com/document/navigate/7/2'; var url3 = 'http://www.test.com/document/navigate/3'; function getValue(url){ var arr = url.match(/navigate\\/([^ ]*)/); arr = arr[arr.length - 1].split('/'); if(arr.length == 1) return { project_id: +arr[0] }; else if(arr.length == 2) return { project_id: +arr[0], note_id: +arr[1] }; else return 'invalid'; } console.log(getValue(url1)); console.log(getValue(url2)); console.log(getValue(url3));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM