0

我想知道给定的字符串(代表一个 url)是否来自同一个子域。例如,http ://www.myDomain.com/someThing 与 myDomain.com 的组合将返回 true。以下内容也将如此:

http://myDomain.comhttp://www.domain.myDomain.com

但下一个(非法)网址不会 - 'http://.myDomain.com'(注意 myDomain 之前的点)

基本上,我需要一个正则表达式来代表 myDomain.com 之前的任何内容 - 通常需要是 (http|https)://[az.] myDomain - 这意味着在 myDomain.com 之前可能有字母后跟点 ( 0 次或更多次) - 但如果没有字母,也不应该有点。

有谁知道如何组装那个正则表达式?

4

3 回答 3

1
http(s)?://([a-z]+\.)*myDomain\.com
于 2012-07-24T16:19:45.000 回答
1

它可以通过 URL 类和正则表达式的组合来完成:

    String url = "myDomain.com";
    String[] urlTest = {
        "http://www.myDomain.com/someThing",
        "http://myDomain.com",
        "http://www.domain.myDomain.com",
        "http://.myDomain.com",
        "http://example.com"

    };
    for (String urlx : urlTest) {
        System.out.print(urlx + "\t");
        try {
            URL u = new URL(urlx);
            String host = u.getHost();
            System.out.print("HOST=" + host + "\t");
            Matcher m = Pattern.compile("(.+\\.)?myDomain\\.com").matcher(host);
            System.out.println(m.matches());

        } catch (MalformedURLException ex) {
            System.out.println("false (no valid url)");
        }
    }
于 2012-07-24T16:35:58.147 回答
0

在这里举个例子:

Pattern aPattern = Pattern.compile("https://example.com[^\"<$\n \\[\\])]+", 
Pattern.MULTILINE);
            Matcher aMatcher = aPattern.matcher(Big String);
while (aMatcher.find()) {
logger.info(aMatcher.group());
}
于 2019-06-26T06:49:34.607 回答