检查字符串是否不包含URL段并进行匹配

Check if string does not contain URL segment and match it

本文关键字:URL 字符串 是否 包含 检查      更新时间:2023-09-26

如何检查URL字符串是否不包含以下字符串:test/test/posts/search/1234567,以便当我提供以下URL: test/test/1234567时,match函数将返回:["test/test/1234567", "test/test/", "", "1234567"] ?

更新:

如果我在URL中提供/posts/search,我想在re.test(url)函数中省略此正则表达式。

// var url = "test/test/posts/search/1234567"; // desired result: null
var url = "test/test/1234567"; // result: ["test/test/1234567", "test/test/", undefined, "1234567"]
var urlPrefix = 'test/test/';
var re = new RegExp('(' + urlPrefix + ')(posts'/search'/)([0-9]+)', 'i');
console.log(url.match(re));

您几乎就在那里了,您只需要使第二个捕获组可选,?量词含义0或1出现,贪心:

var url = "test/test/posts/search/1234567"; // result: null
var urlPrefix = 'test/test/';
if (!url.includes("posts/search/")) {
   var re = new RegExp('(' + urlPrefix + ')(posts/search/)?([0-9]+)', 'i');
   //                                                     ^    
   console.log(url.match(re));
}
else {
console.log(url + " contains 'posts/search/'!");
}