使用正則表達(dá)式驗(yàn)證域名的教程
下面是一篇關(guān)于如何使用正則表達(dá)式驗(yàn)證域名的教程。
如何使用正則表達(dá)式驗(yàn)證域名
簡(jiǎn)介
域名是互聯(lián)網(wǎng)上網(wǎng)站的地址,每個(gè)域名由多個(gè)標(biāo)簽(label)組成,標(biāo)簽之間用點(diǎn) .
分隔。域名規(guī)則有很多細(xì)節(jié),但基本要求是:
- 每個(gè)標(biāo)簽只能包含字母、數(shù)字和短橫線
-
。 - 標(biāo)簽的長(zhǎng)度不能超過(guò) 63 個(gè)字符。
- 域名的最后一部分(即頂級(jí)域名,TLD)必須由字母組成,且至少為 2 個(gè)字符。
在本文中,我們將學(xué)習(xí)如何使用正則表達(dá)式來(lái)驗(yàn)證域名是否合法。
正則表達(dá)式分析
我們可以使用以下正則表達(dá)式來(lái)驗(yàn)證域名格式是否正確:
^(?:[a-zA-Z0-9-]{1,63}\.)+[a-zA-Z]{2,}$
解釋
^
和$
:^
:表示匹配字符串的開(kāi)始。$
:表示匹配字符串的結(jié)束。通過(guò)這兩個(gè)符號(hào),我們可以確保整個(gè)字符串符合正則表達(dá)式的規(guī)則。
(?: ... )
:- 這是一個(gè)非捕獲組,用于將一組元素組合在一起,但是不會(huì)把它們單獨(dú)捕獲用于后續(xù)的處理。這里的非捕獲組用于重復(fù)匹配標(biāo)簽部分。
[a-zA-Z0-9-]{1,63}
:[a-zA-Z0-9-]
:表示標(biāo)簽部分可以包含小寫字母、大寫字母、數(shù)字和短橫線-
。{1,63}
:表示每個(gè)標(biāo)簽的長(zhǎng)度應(yīng)在 1 到 63 個(gè)字符之間。
\.
:\.
用于匹配點(diǎn).
。由于點(diǎn)在正則表達(dá)式中有特殊意義(表示任何單個(gè)字符),所以我們使用反斜杠對(duì)它進(jìn)行轉(zhuǎn)義。
+
:+
表示前面的模式(即標(biāo)簽部分和點(diǎn))可以重復(fù)多次,表示域名可以有多個(gè)標(biāo)簽部分。
[a-zA-Z]{2,}
:[a-zA-Z]
:表示頂級(jí)域名(TLD)部分只可以包含字母。{2,}
:表示頂級(jí)域名的長(zhǎng)度必須至少為 2 個(gè)字符。 合法的域名示例
以下是一些合法的域名,正則表達(dá)式應(yīng)當(dāng)能夠匹配:
example.com
www.example.com
subdomain.example.co
my-website.example.org
不合法的域名示例
以下是一些不合法的域名,正則表達(dá)式會(huì)排除:
- example..com —— 雙點(diǎn) .. 不合法
- -example.com —— 域名標(biāo)簽不能以短橫線 - 開(kāi)頭
- example-.com —— 域名標(biāo)簽不能以短橫線 - 結(jié)尾
- .example.com —— 域名不能以點(diǎn) . 開(kāi)頭
- example —— 沒(méi)有頂級(jí)域名部分(缺少點(diǎn))
- example.c —— 頂級(jí)域名長(zhǎng)度小于 2 個(gè)字符
- example.123 —— 頂級(jí)域名不能包含數(shù)字
使用 Java 正則表達(dá)式進(jìn)行域名驗(yàn)證
在 Java 中,我們可以使用 Pattern
類和 Matcher
類來(lái)編寫一個(gè)方法來(lái)驗(yàn)證域名。以下是 Java 實(shí)現(xiàn):
import java.util.regex.Matcher; import java.util.regex.Pattern; public class DomainValidator { // 域名驗(yàn)證正則表達(dá)式 private static final String DOMAIN_REGEX = "^(?:[a-zA-Z0-9-]{1,63}\\.)+[a-zA-Z]{2,}$"; // 驗(yàn)證域名是否合法 public static boolean isValidDomain(String domain) { // 創(chuàng)建模式對(duì)象 Pattern pattern = Pattern.compile(DOMAIN_REGEX); // 創(chuàng)建匹配器對(duì)象 Matcher matcher = pattern.matcher(domain); // 返回是否匹配 return matcher.matches(); } // 測(cè)試方法 public static void main(String[] args) { // 測(cè)試合法域名 System.out.println(isValidDomain("example.com")); // true System.out.println(isValidDomain("www.example.com")); // true System.out.println(isValidDomain("subdomain.example.co")); // true System.out.println(isValidDomain("my-website.example.org")); // true // 測(cè)試不合法域名 System.out.println(isValidDomain("example..com")); // false System.out.println(isValidDomain("-example.com")); // false System.out.println(isValidDomain("example-.com")); // false System.out.println(isValidDomain(".example.com")); // false System.out.println(isValidDomain("example")); // false System.out.println(isValidDomain("example.c")); // false System.out.println(isValidDomain("example.123")); // false } }
解釋:
- 正則表達(dá)式:我們將正則表達(dá)式
DOMAIN_REGEX
定義為常量,以便在 Java 代碼中使用。 - isValidDomain 方法:該方法接收一個(gè)字符串參數(shù)
domain
,并使用Pattern.compile()
方法編譯正則表達(dá)式,再使用matcher.matches()
來(lái)驗(yàn)證輸入的字符串是否符合域名格式。 - main 方法:測(cè)試了多個(gè)合法和不合法的域名,以驗(yàn)證
isValidDomain()
方法的正確性。
總結(jié)
通過(guò)本教程,你已經(jīng)學(xué)會(huì)了如何使用正則表達(dá)式來(lái)驗(yàn)證域名格式。我們編寫了一個(gè)正則表達(dá)式,確保域名符合基本的規(guī)則:每個(gè)標(biāo)簽只能包含字母、數(shù)字和短橫線,標(biāo)簽長(zhǎng)度限制在 1 到 63 個(gè)字符之間,且頂級(jí)域名必須由字母組成且長(zhǎng)度至少為 2 個(gè)字符。
我們還使用 Java 的 Pattern
和 Matcher
類實(shí)現(xiàn)了一個(gè)域名驗(yàn)證方法,并對(duì)合法和不合法的域名進(jìn)行了測(cè)試。
希望這篇教程對(duì)你有所幫助!
指定后綴域名驗(yàn)證
以下是從阿里云域名購(gòu)買處獲得的一些域名后綴:
.ac.cn .ah.cn .archi .art .asia .auto .autos .baby .band .beauty .beer .bio .biz .bj.cn .black .blue .bond .cab .cafe .car .cars .cash .cc .center .chat .city .click .cloud .club .cn .co .college .com .com.cn .company .cool .cq.cn .cyou .design .email .fan .fans .fashion .fit .fj.cn .fun .fund .fyi .games .gd.cn .global .gold .gov.cn .green .group .gs.cn .guru .gx.cn .gz.cn .ha.cn .hair .hb.cn .he.cn .hi.cn .hk.cn .hl.cn .hn.cn .homes .host .icu .info .ink .jl.cn .js.cn .jx.cn .kim .law .life .live .ln.cn .lotto .love .ltd .luxe .makeup .market .mba .me .media .mo.cn .mobi .monster .motorcycles .net .net.cn .news .nm.cn .nx.cn .online .org.cn .organic .pink .plus .poker .press .pro .promo .protection .pub .pw .qh.cn .quest .red .ren .rent .run .sc.cn .school .sd.cn .security .sh.cn .shop .shopping .show .site .ski .skin .sn.cn .social .space .storage .store .studio .sx.cn .tax .team .tech .technology .theatre .tickets .tj.cn .today .top .tv .tw.cn .uno .video .vin .vip .vote .voto .wang .website .wiki .work .world .xin .xj.cn .xyz .xz.cn .yachts .yn.cn .yoga .zj.cn .zone .餐廳 .佛山 .公司 .廣東 .集團(tuán) .企業(yè) .商標(biāo) .商城 .商店 .網(wǎng)店 .網(wǎng)絡(luò) .網(wǎng)址 .我愛(ài)你 .游戲 .娛樂(lè) .在線 .招聘 .中國(guó) .中文網(wǎng).ac.cn .ah.cn .archi .art .asia .auto .autos .baby .band .beauty .beer .bio .biz .bj.cn .black .blue .bond .cab .cafe .car .cars .cash .cc .center .chat .city .click .cloud .club .cn .co .college .com .com.cn .company .cool .cq.cn .cyou .design .email .fan .fans .fashion .fit .fj.cn .fun .fund .fyi .games .gd.cn .global .gold .gov.cn .green .group .gs.cn .guru .gx.cn .gz.cn .ha.cn .hair .hb.cn .he.cn .hi.cn .hk.cn .hl.cn .hn.cn .homes .host .icu .info .ink .jl.cn .js.cn .jx.cn .kim .law .life .live .ln.cn .lotto .love .ltd .luxe .makeup .market .mba .me .media .mo.cn .mobi .monster .motorcycles .net .net.cn .news .nm.cn .nx.cn .online .org.cn .organic .pink .plus .poker .press .pro .promo .protection .pub .pw .qh.cn .quest .red .ren .rent .run .sc.cn .school .sd.cn .security .sh.cn .shop .shopping .show .site .ski .skin .sn.cn .social .space .storage .store .studio .sx.cn .tax .team .tech .technology .theatre .tickets .tj.cn .today .top .tv .tw.cn .uno .video .vin .vip .vote .voto .wang .website .wiki .work .world .xin .xj.cn .xyz .xz.cn .yachts .yn.cn .yoga .zj.cn .zone .餐廳 .佛山 .公司 .廣東 .集團(tuán) .企業(yè) .商標(biāo) .商城 .商店 .網(wǎng)店 .網(wǎng)絡(luò) .網(wǎng)址 .我愛(ài)你 .游戲 .娛樂(lè) .在線 .招聘 .中國(guó) .中文網(wǎng)
要求在一段文本中,用正則表達(dá)式匹配出包含我給的后綴域名的數(shù)據(jù),正則表達(dá)式如下:
(?:[a-zA-Z0-9-]+\.)+(?:ac\.cn|ah\.cn|archi|art|asia|auto|autos|baby|band|beauty|beer|bio|biz|bj\.cn|black|blue|bond|cab|cafe|car|cars|cash|cc|center|chat|city|click|cloud|club|cn|co|college|com|com\.cn|company|cool|cq\.cn|cyou|design|email|fan|fans|fashion|fit|fj\.cn|fun|fund|fyi|games|gd\.cn|global|gold|gov\.cn|green|group|gs\.cn|guru|gx\.cn|gz\.cn|ha\.cn|hair|hb\.cn|he\.cn|hi\.cn|hk\.cn|hl\.cn|hn\.cn|homes|host|icu|info|ink|jl\.cn|js\.cn|jx\.cn|kim|law|life|live|ln\.cn|lotto|love|ltd|luxe|makeup|market|mba|me|media|mo\.cn|mobi|monster|motorcycles|net|net\.cn|news|nm\.cn|nx\.cn|online|org\.cn|organic|pink|plus|poker|press|pro|promo|protection|pub|pw|qh\.cn|quest|red|ren|rent|run|sc\.cn|school|sd\.cn|security|sh\.cn|shop|shopping|show|site|ski|skin|sn\.cn|social|space|storage|store|studio|sx\.cn|tax|team|tech|technology|theatre|tickets|tj\.cn|today|top|tv|tw\.cn|uno|video|vin|vip|vote|voto|wang|website|wiki|work|world|xin|xj\.cn|xyz|xz\.cn|yachts|yn\.cn|yoga|zj\.cn|zone|餐廳|佛山|公司|廣東|集團(tuán)|企業(yè)|商標(biāo)|商城|商店|網(wǎng)店|網(wǎng)絡(luò)|網(wǎng)址|我愛(ài)你|游戲|娛樂(lè)|在線|招聘|中國(guó)|中文網(wǎng))
測(cè)試數(shù)據(jù)如下:
www.example.com www.test.ac.cn example.企業(yè) mywebsite.中國(guó) www.example.ac.cn test.ah.cn mywebsite.archi site.com invalidwebsite.xyz example.bj.cn example.com.cn random.website /zuankeba/3894433.html
效果如下:
到此這篇關(guān)于如何使用正則表達(dá)式驗(yàn)證域名的文章就介紹到這了,更多相關(guān)正則表達(dá)式驗(yàn)證域名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php中常用的正則表達(dá)式的介紹及應(yīng)用實(shí)例代碼
在編寫處理字符串的程序或網(wǎng)頁(yè)時(shí),經(jīng)常會(huì)有查找符合某些復(fù)雜規(guī)則的字符串的需要。正則表達(dá)式就是用于描述這些規(guī)則的語(yǔ)法。2009-12-12js正則匹配table,img及去除各種標(biāo)簽問(wèn)題
這篇文章主要介紹了js正則匹配table,img及去除各種標(biāo)簽問(wèn)題,需要的朋友可以參考下2020-04-04正則表達(dá)式初運(yùn)用之認(rèn)證界面的實(shí)現(xiàn)代碼
這篇文章主要介紹了正則表達(dá)式初運(yùn)用之認(rèn)證界面的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-09-09JS 正則表達(dá)式(學(xué)習(xí)筆記2)匹配網(wǎng)址url參數(shù)
呵呵,剛學(xué)習(xí)正則表達(dá)式,今天幫一個(gè)美女解決了個(gè)問(wèn)題。感到很高興。先貼下今天都學(xué)了什么吧。不然忘記了。2010-05-05