[英]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.