今天,簡(jiǎn)單講講android里如何檢測(cè)輸入的字符串為合法的域名。
鐘祥網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。這個(gè)昨天搜索了很多資料,基本沒(méi)有找到符合要求的代碼。后來(lái),花了很多時(shí)間,才解決了問(wèn)題。這里記錄一下。
一。檢查輸入域名是否合法。
具體的代碼很簡(jiǎn)單:
public static boolean isURL2(String str){ String regex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?" //ftp的user@ + "(([0-9]{1,3}\\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 + "|" // 允許IP和DOMAIN(域名) + "([0-9a-z_!~*\'()-]+\\.)*" // 域名- www. // + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\\." // 二級(jí)域名 + "[a-z]{2,6})" // first level domain- .com or .museum + "(:[0-9]{1,4})?" // 端口- :80 + "((/?)|" // a slash isn\'t required if there is no file name + "(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)$"; return match( regex ,str ); }
/** * @param regex * 正則表達(dá)式字符串 * @param str * 要匹配的字符串 * @return 如果str 符合 regex的正則表達(dá)式格式,返回true, 否則返回 false; */ private static boolean match(String regex, String str) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(str); return matcher.matches(); }
這個(gè)基本是用正則表達(dá)式來(lái)驗(yàn)證字符串是否為合法域名,也可以檢查輸入的IP是否合法,但是不保證域名是否可以訪問(wèn)。網(wǎng)上很多檢查域名是否可以訪問(wèn)的代碼,也很簡(jiǎn)單。
二.判斷輸入的域名是否可以訪問(wèn)
方法一:
import java.io.InputStream; import java.net.URL; public class Test { public static void main(String[] args) { URL url; try { url = new URL("http://www.baidu.com"); InputStream in = url.openStream(); System.out.println("連接可用"); } catch (Exception e1) { System.out.println("連接打不開(kāi)!"); url = null; } } }
方法一使用java.net 下的URL類來(lái)實(shí)現(xiàn),URL 是統(tǒng)一資源標(biāo)識(shí)符的引用,一個(gè)URL實(shí)例代表著一個(gè)url的引用,然后使用了URL中的的openStream()方法。
方法二:
import java.net.HttpURLConnection; import java.net.URL; /** * 文件名稱為:URLAvailability.java * 文件功能簡(jiǎn)述: 描述一個(gè)URL地址是否有效 * @author Jason * @time 2010-9-14 * */ public class URLAvailability { private static URL url; private static HttpURLConnection con; private static int state = -1; /** * 功能:檢測(cè)當(dāng)前URL是否可連接或是否有效, * 描述:最多連接網(wǎng)絡(luò) 5 次, 如果 5 次都不成功,視為該地址不可用 * @param urlStr 指定URL網(wǎng)絡(luò)地址 * @return URL */ public synchronized URL isConnect(String urlStr) { int counts = 0; if (urlStr == null || urlStr.length() <= 0) { return null; } while (counts < 5) { try { url = new URL(urlStr); con = (HttpURLConnection) url.openConnection(); state = con.getResponseCode(); System.out.println(counts +"= "+state); if (state == 200) { System.out.println("URL可用!"); } break; }catch (Exception ex) { counts++; System.out.println("URL不可用,連接第 "+counts+" 次"); urlStr = null; continue; } } return url; } public static void main(String[] args) { URLAvailability u=new URLAvailability(); u.isConnect("http://www.baidu.com"); } }
方法二使用了java.net 下的URL和HttpURLConnection兩個(gè)類來(lái)實(shí)現(xiàn)。它使用了HttpURLConnection 中的 getResponseCode();方法,HttpURLConnection : 通常一個(gè)HttpURLConnection 的實(shí)例可以生成一個(gè)請(qǐng)求,它有個(gè)方法getResponseCode();可以得到請(qǐng)求的響應(yīng)狀態(tài),該方法返回一個(gè) int 分別是 200 and 404 如無(wú)法從響應(yīng)中識(shí)別任何代碼則返回 -1。
android 檢測(cè)字符串是否為合法域名就講完了。
就這么簡(jiǎn)單。