如何在javascript中使用正则表达式检查有效的域名和用户名?
-<script>
function validate()
{
var patt1=new RegExp(/^[a-zA-Z0-9._-]+\\[a-zA-Z0-9.-]$/);
var text= document.getElementById('text1').value;
alert(patt1.test(text));
}
但它对我不起作用。
答案 0 :(得分:6)
function CheckIsValidDomain(domain) {
var re = new RegExp(/^((?:(?:(?:\w[\.\-\+]?)*)\w)+)((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/);
return domain.match(re);
}
为我尝试这项工作。
答案 1 :(得分:5)
使用此:
<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>
答案 2 :(得分:2)
请勿将RegExp
constructor与regex literals混淆。使用
/^[a-zA-Z0-9._-]+\\[a-zA-Z0-9.-]$/
或
new RegExp("^[a-zA-Z0-9._-]+\\\\[a-zA-Z0-9.-]$");
不确定反斜杠在那里做什么,顺便说一下。你想要匹配一个点吗?在文字中,使用\.
,在字符串中使用\\.
。
答案 3 :(得分:1)
检查一下:http://shauninman.com/archive/2006/05/08/validating_domain_names
/^([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$/i
答案 4 :(得分:0)
这可能稍微偏离主题,但在网上搜索了几个小时并尝试了各种RegExp(其中没有对我有用)。我决定编写自己的函数,该函数将列出有效的TLD扩展并对它们进行验证。因此,对于遇到类似问题的任何人,请查看我的Javascript函数:
function domainCheck(dom) {
// convert input to lowercase.
dom = dom.toLowerCase();
// find the first occurance of '.'
pos = dom.indexOf(".");
// Using the first occurance of '.'
// find the extension submitted.
tld = dom.substring(pos);
switch(tld) {
// TLD's to accept.
case '.com': return true; break;
case '.co.uk': return true; break;
case '.eu': return true; break;
case '.io': return true; break;
case '.co': return true; break;
case '.net': return true; break;
default: return false;
}
}
我在这里使用此功能创建了一个演示: http://jsfiddle.net/netfox/MhPG8/19/embedded/result/
答案 5 :(得分:-1)
此代码也支持子域:
^(([a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]|[a-zA-Z0-9])\.)*[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$