Regexp区分两个相似的URL

时间:2015-09-04 14:21:13

标签: javascript regex

在JS中,我需要确定现在加载哪种URL模式。 有些网页的网址如下: http://example.com/sameword/otherword/

其他人

http://example.com/sameword/anotherword/123132/

正如您所看到的,域名和网址的第一部分是相同的。我想我必须在JS中使用regexp,但不知道如何制作正确的正则表达式。

更新:

  • 我无法计算斜杠,因为其他网址具有相同的斜杠 计数。我想我需要一个带有" sameword"的正则表达式。
  • 我不能用 / anotherword /因为它总是在变化。

更新2: 示例网址:

http://example.com/rentals/rossiya-moskva-i-obl/

http://example.com/rentals/rossiya-moskva-i-obl-moskva/1722224/

http://example.com/cabinet/objects/

它们都是不同的页面。我有一个DB,我可以存储SOMETHING并从JS调用SOMETHING以在首选页面上启动功能。例如,今天我希望第一类网址提醒,明天 - 第二类。 它应该是获取SOMETHING的所有页面上相同的固定JS代码,并且SOMETHING确定它是否需要在该页面上运行函数。

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式来区分2个网址

http:\/\/example\.com\/same_fixed_word\/.*\/[0-9]*\/

RegEx101 Example

答案 1 :(得分:0)

将URL放在数组中 - 一个数组用于今天的URL,另一个用于排除。

var todays_urls = [
    '//example\.com/rentals/rossiya-moskva-i-obl/',
    '//example\.com/rentals/usa-nyc/'
];
var todays_exceptions = [
    '//example\.com/rentals/usa-nyc/\d+/',
    '//example\.com/cabinet/objects/'
]

在实际代码中,您可能会使用AJAX从服务器获取此信息。

然后,您可以针对两个列表测试当前URL。

if (!todays_exceptions.some(function(el) {
    return RegExp(el).test(document.location);
}) && todays_urls.some(function(el) {
    return RegExp(el).test(document.location);
})) {
    alert("This is a good URL");
}