[英]How to validate domain name using regex?
這是我驗證域名的代碼。
function frmValidate() {
var val = document.frmDomin;
if (/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/.test(val.name.value)) {
}
else {
alert("Enter Valid Domain Name");
val.name.focus();
return false;
}
}
和
<form name="frmDomin" action="" method="post" onsubmit="return frmValidate();">
Domain Name : <input type="text" value="" id="name" name="name" />
</form>
現在我輸入了http://devp1.tech.in
並提醒消息。 我也想進入子域。 如何改變這個? 我不應該警覺。
這有點沉重:
^(?:(?:(?:[a-zA-z\-]+)\:\/{1,3})?(?:[a-zA-Z0-9])(?:[a-zA-Z0-9\-\.]){1,61}(?:\.[a-zA-Z]{2,})+|\[(?:(?:(?:[a-fA-F0-9]){1,4})(?::(?:[a-fA-F0-9]){1,4}){7}|::1|::)\]|(?:(?:[0-9]{1,3})(?:\.[0-9]{1,3}){3}))(?:\:[0-9]{1,5})?$
將匹配:
google.com
db.my-website.co.us
ftp://container-617.databases.online
many-ports.com:7777
注意:不會匹配localhost
IPv4
192.168.3.1
127.0.0.1:3306
IPv6(部分支持)
[2001:0db8:85a3:0000:0000:8a2e:0370:7334]
[2001:db8:85a3:0:0:8a2e:370:7334]
(與之前相同)[da7a:ba5e:da7a:ba5e:da7a:ba5e:da7a:ba5e]:3306
[::1]
(本地主機環回)[::]
(未指定地址)但不是(IPv6)
2001:db8:85a3::8a2e:370:7334]
此正則表達式不支持將連續的 0 段折疊為 IPv6 地址中的“::”。 (閱讀:不要在 IPv6 地址上嘗試此操作)
我建議閱讀 O'Reilly 的指南: https : //www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html
嘗試使用https://regex101.com/來驗證正則表達式的結果。
8.15. 驗證域名問題您想檢查一個字符串是否看起來像是一個有效的、完全限定的域名,或者在更長的文本中找到這樣的域名。
解決方案檢查字符串是否看起來像一個有效的域名:
^([a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,}$
正則表達式選項:不區分大小寫的正則表達式風格:.NET、Java、JavaScript、PCRE、Perl、Python
\\A([a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,}\\Z
正則表達式選項:不區分大小寫的正則表達式風格:.NET、Java、PCRE、Perl、Python、Ruby 在較長的文本中查找有效域名:
\\b([a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,}\\b
正則表達式選項:不區分大小寫正則表達式風格:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby 檢查域的每個部分是否不超過 63 個字符:
\\b((?=[a-z0-9-]{1,63}\\.)[a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,63}\\b
正則表達式選項:不區分大小寫的正則表達式風格:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby 允許使用 punycode 表示法的國際化域名:
\\b((xn--)?[a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,}\\b
正則表達式選項:不區分大小寫正則表達式風格:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby 檢查域的每個部分是否不超過 63 個字符,並允許使用 punycode 表示法的國際化域名:
\\b((?=[a-z0-9-]{1,63}\\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\\.)+[az]{2,63}\\b
正則表達式選項:不區分大小寫的正則表達式風格:.NET、Java、JavaScript、PCRE、Perl、Python、Ruby
討論域名具有 domain.tld 或 subdomain.domain.tld 或任意數量的附加子域的形式。 ...
試試這個正則表達式:
/([a-z0-9]+\.)*[a-z0-9]+\.[a-z]+/
您編寫的正則表達式僅在一個點后驗證...因此編寫正則表達式,通過再放置一個點和類似正則表達式來放置相似的正則表達式來修改它。...我知道這個答案很模糊...同時張貼正則表達式...
<script>
function frmValidate() {
var val = document.frmDomin.name.value;
if (/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/.test(val)) {
alert("Valid Domain Name");
return true;
} else {
alert("Enter Valid Domain Name");
val.name.focus();
return false;
}
}
</script>
注意:這不會驗證 Url。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.