在正则表达式工作正常的情况下,域是根域,但此正则表达式不将子域识别为有效域:
例如:abc.com
被识别为有效域,但如果我使用ab.bc.com
,则regex表示字符串无效,我该如何改进它以支持ab.bc.com
?< / p>
var reg = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/;
if ( !reg.test(the_domain))
{
alert('has special characters');
}
else
{
alert('no special characters');
}
以下是jsfiddle
答案 0 :(得分:2)
您可以为 xx。模式添加量词,并将其设为/^([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/
var reg = /^([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]\.)+[a-zA-Z]{2,}$/;
// ^ ^ changes made
console.log(reg.test("abc.com"));
console.log(reg.test("ab.bc.com"));
console.log(reg.test("a-b.bc.com"));
console.log(reg.test("ab-.bc.com"));
答案 1 :(得分:1)
/^(\S+\.\S+)$/
这确保它至少有一个带有句号和另一个单词的单词,如果它重复那么就可以了。
https://jsfiddle.net/3yb1v222/
或者对你可以做的角色更加严格:
/^[A-Za-z0-9-_&\?]+(\.[A-Za-z0-9-_&\?]+){1,2}/
如果要排除任何给定网址上的路径,您可以删除其他特殊字符,但无论如何......它的概念相同。