簡體   English   中英

Java 匹配域的正則表達式

[英]Java regex expression for matching domain

我正在嘗試制定一個正則表達式模式,該模式檢查是否存在域,后跟/后跟任何字符。 例如字符串https://example.com/對我來說很好,但我想使字符串https://example.com/xyz無效,因為它的域后跟路徑。

目前我已經提出了檢查以 https 開頭並后跟任何字符的字符串的模式: https://(.*) 但我一直無法為上述場景制定模式。

提前感謝您的投入:)

您應該設置一個模式以http開頭,並且可以在字符串中間以/不帶任何/結尾

^http(s)?://[^/]*/?$

參見 RFC 3986 附錄 B ( https://www.ietf.org/rfc/rfc3986.txt )

附錄 B. 使用正則表達式解析 URI 引用

由於“first-match-wins”算法與 POSIX 正則表達式使用的“貪婪”消歧 > 方法相同,因此使用正則 > 表達式來解析 URI 引用的潛在五個組件是很自然和常見的。

以下行是將格式良好的 URI >reference 分解為其組件的正則表達式。

 ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9

上面第二行中的數字只是為了便於閱讀; 它們表示 > 每個子表達式的參考點(即每個成對的括號)。

我將分兩步解決這個問題,首先我將域與以下正則表達式模式匹配

http(s)?://(?:[\w0-9](?:[\w0-9-]{0,61}[\w0-9])?\.)+[\w0-9][\w0-9-]{0,61}[\w0-9](/)?

一旦你有了域,那么我將對 rest 進行子串化,如果不僅僅是一個“/”(即“/xyz”),然后根據您的要求使字符串無效。

例如:

    String urlString = "https://example.com/";
    String regex = "http(s)?://(?:[\\w0-9](?:[\\w0-9-]{0,61}[\\w0-9])?\\.)+[\\w0-9][\\w0-9-]{0,61}[\\w0-9](/)?";
    String[] url = urlString.split(regex);
    if(url.length > 1) {
        System.out.println(urlString + " has a path.");
    } else {
        System.out.println(urlString + " does not have a path.");
    }

這是一個正則表達式,用於過濾掉需要無效的 url。

^https?:\/\/(www\.)?([^:\/\n?]+)\/?$

希望這可以幫助 !

請使用以下正則表達式一次。 這可能會解決您的問題:

http(s?)://[[a-zA-z]+\\.*\\/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM