如何识别包含(域)子字符串的所有URL?

时间:2011-05-25 13:41:51

标签: javascript regex

如果我是正确的,以下代码将只匹配完全显示的网址。

但是,如果您想要识别子域以及包含各种不同查询字符串的网址(换句话说,包含此域的任何地址),它会是什么样子:

    var url = /test.com/

    if (window.location.href.match(url)){
        alert("match!");
    }

5 个答案:

答案 0 :(得分:1)

如果你想让这个正则表达式匹配“test.com”你需要逃避“。”和“/”都表示正则表达式语法中的任何字符。

逃脱:\/test\.com\/

查看here以获取更多信息

答案 1 :(得分:0)

不,您的模式实际上会匹配包含test.com的所有字符串。

答案 2 :(得分:0)

常规表达/test.com/表示匹配字符串中任意位置的test[ANY CHARACTER]com

最好使用example.com作为示例链接。所以我用例子取代了测试。

一些示例匹配可能是

http://example.com
http://examplexcom.xyz
http://example!com.xyz
http://example.com?q=123
http://sub.example.com
http://fooexample.com
http://example.com/asdf/123
http://stackoverflow.com/?site=example.com

答案 3 :(得分:0)

我认为您需要使用/g。 / g启用“全局”匹配。使用replace()方法时,请指定此修饰符以替换所有匹配项,而不是仅替换第一个匹配项:

var /test.com/g;

答案 4 :(得分:0)

如果你想测试一个URL是否有效,这就是我使用的那个。相当复杂,因为它也照顾数字域和&其他一些特点:

var urlMatcher = /(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?/;

注意参数和锚点等...不要让我解释详细信息。