在上一篇文章《通用正則表達式開源工具,爲開源綿盡薄力 》中,我們介紹了很多正則表達式的實例,工作中大家也經常遇到新的規則需要匹配,今天就看一下檢測域名白名單的幾種方式。
v方式一
/** * * 獲取網址 URL 的一級域名 * http://detail.tmall.com/item.htm?spm=a230r.1.10.44.1xpDSH&id=15453106243&_u=f4ve1uq1092 ->> tmall.com * * @param url * @return */ private static Pattern p = Pattern.compile("(?<=http://|\\.)[^.]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE); public static String getDomain(String url) { // 獲取完整的域名 // Pattern p=Pattern.compile("[^//]*?\\.(com|cn|net|org|biz|info|cc|tv)", Pattern.CASE_INSENSITIVE); Matcher matcher = p.matcher(url); matcher.find(); return matcher.group(); }
v方式二
/** * 檢測域名 * @param url 原始url * @param target 需要檢測的url * @return */ public static boolean checkDomain(String url, String target){ String urlDecode = url; try { urlDecode = URLDecoder.decode(url); }catch (Exception e){ } Pattern pattern = Pattern.compile("://(.*?)/", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(urlDecode); matcher.find(); String domain = matcher.group(1); if(!Strings.isNullOrEmpty(domain)){ if(domain.contains(target)){ return true; } } return false; }
v方式三
/** * 檢測域名 * @param url 原始url * @param target 需要檢測的url * @return */ public static boolean checkDomain2(String url, String target){ String urlDecode = url; try { urlDecode = URLDecoder.decode(url); }catch (Exception e){ } String pattern = "https?://[^/]*" + target + "/.*"; boolean isMatch = Pattern.matches(pattern, urlDecode); return isMatch; }
v源碼地址
https://github.com/toutouge/TouTou.RegexTool
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平臺的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回覆。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!