检查位置路径/搜索/哈希值是否匹配

时间:2018-10-22 20:58:51

标签: javascript regex

我有一个像这样的字符串数组:['foo', 'bar', 'foo/*/test']和一个像这样的随机URL:http://www.example.com/foo/bar?test=123/another=one#test

URL可能包含查询,也可能不包含哈希道具。

是否存在正则表达式或简单的功能来检查URL,URL中是否包含数组中的任何这些值?

我知道String.prototype.includes函数,因此我们可以这样做: let path = location.pathname,然后是path.includes('foo'),但我希望包含foo/*/bar/结构的字符串具有更高的重要性。

例如,如果URL像这样:http://www.example.com/foo/1234/test,则该函数应仅返回值foo/*/test,而不是直接在数组内部返回foo值。

因此,只要我在包含/之类的数组中有一个字符串,我就想先检查该值或将此值赋予最高优先级。

谢谢!

1 个答案:

答案 0 :(得分:0)

由于回复中的格式都弄乱了,因此我必须像这样发布它:

@VincentDecaux完全理解。我的最初想法是这样的:

function checkUrl(url, arr) {
    const checkForPaths = arr.filter(val => val.match(/[\/](\w+)/ig));
     if (checkForPaths.length) {
         return true;
     }

     const filteredArray = arr.filter(val => url.includes(val));
     if (filteredArray.length) {
         return true;
     }
     return false;
}

这可能已经起作用,因为我只希望函数返回true / false才能显示某物。在页面上与此无关。