正则表达式允许子域

时间:2017-07-14 20:40:57

标签: javascript regex

在正则表达式工作正常的情况下,域是根域,但此正则表达式不将子域识别为有效域:

例如: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

2 个答案:

答案 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}/

如果要排除任何给定网址上的路径,您可以删除其他特殊字符,但无论如何......它的概念相同。

https://jsfiddle.net/u7hgabec/