在JavaScript中,是否有像glob这样的URL?

时间:2014-07-03 15:59:03

标签: javascript regex url glob

我需要将URL与字符串模式匹配,但我想避免使用RegExp来保持模式的简单性和可读性。

我希望能够拥有像http://*.example.org/*这样的模式,它们应该等同于RegExp中的/^http:\/\/.*\.example.org\/.*$/。 RegExp还应该说明我为什么要让它更具可读性。

基本上我喜欢用于URL的类似于glob的模式。问题是:普通的glob实现将/视为分隔符。这意味着,http://foo.example.org/bar/bla与我的简单模式不匹配。

所以,一个可以忽略斜杠的glob的实现会很棒。有这样的东西或类似的东西吗?

2 个答案:

答案 0 :(得分:4)

你可以从像这样的函数开始,用于类似行为的行为:

function glob(pattern, input) {
    var re = new RegExp(pattern.replace(/([.?+^$[\]\\(){}|\/-])/g, "\\$1").replace(/\*/g, '.*'));
    return re.test(input);
}

然后将其称为:

glob('http://*.example.org/*', 'http://foo.example.org/bar/bla');
true

答案 1 :(得分:2)

通过为它编写一个lib来解决问题:

https://github.com/lnwdr/calmcard

这将使用简单的通配符匹配任意字符串。