Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除域扩展的Javascript正则表达式_Javascript - Fatal编程技术网

删除域扩展的Javascript正则表达式

删除域扩展的Javascript正则表达式,javascript,Javascript,我想要一个可以从字符串中删除域扩展名的正则表达式,例如字符串是从文本字段中删除的,因此用户可能包括也可能不包括http://www. var fqdn = "http://www.mydomainname.com"; var name = regex_function(fqdn); // name === "mydomainname" 有两种主要方法可以做到这一点:和使用DOM function regex_function(fqdn) { var a = document.cre

我想要一个可以从字符串中删除域扩展名的正则表达式,例如字符串是从文本字段中删除的,因此用户可能包括也可能不包括
http://www.

var fqdn = "http://www.mydomainname.com";

var name = regex_function(fqdn);

// name === "mydomainname"

有两种主要方法可以做到这一点:和使用DOM

function regex_function(fqdn) {
    var a = document.createElement('a');
    a.href = fqdn;
    return a.hostname || undefined;
}
没有可靠的方法可以删除像
.com
这样的域扩展,但你为什么要这样做呢

此函数确实删除了一些扩展,但请不要使用此函数,我在这里添加此函数是为了向您展示,要删除这些扩展的一小部分,需要做多少工作和不必要的代码:

function removeExt(str){
    var a = document.createElement('a');
    a.href = str;
    var hostName = a.hostname;
    var domainExtensions = [
        "gov", "org", "co", "com", "in", "info", "net", "uk", "af", "am", "ar", "au", "as", "az", "be", "bg", "bn", "bo", "bs", "ca", "cs", "cy", "da", "de", "dv", "el", "en", "es", "et", "eu", "fa", "fi", "fo", "fr", "gd", "gl", "gn", "gu", "he", "hi", "hr", "hu", "hy", "id", "is", "it", "jp", "ka", "kk", "km", "kn", "ko", "ks", "la", "lo", "lt", "lv", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "nb", "ne", "nl", "or", "pa", "pl", "pt", "rm", "ro", "ru", "sa", "sb", "sd", "si", "sk", "sl", "so", "sq", "sr", "sv", "sw", "ta", "te", "tg", "th", "tk", "tn", "tr", "ts", "tt", "uk", "ur", "uz", "vi", "xh", "yi", "zh", "zu"
    ];
    var regex = new RegExp("\.?(\."+domainExtensions.join('|')+")+$");
    return hostName.replace(regex,'');
}

有两种主要方法可以做到这一点:和使用DOM

function regex_function(fqdn) {
    var a = document.createElement('a');
    a.href = fqdn;
    return a.hostname || undefined;
}
没有可靠的方法可以删除像
.com
这样的域扩展,但你为什么要这样做呢

此函数确实删除了一些扩展,但请不要使用此函数,我在这里添加此函数是为了向您展示,要删除这些扩展的一小部分,需要做多少工作和不必要的代码:

function removeExt(str){
    var a = document.createElement('a');
    a.href = str;
    var hostName = a.hostname;
    var domainExtensions = [
        "gov", "org", "co", "com", "in", "info", "net", "uk", "af", "am", "ar", "au", "as", "az", "be", "bg", "bn", "bo", "bs", "ca", "cs", "cy", "da", "de", "dv", "el", "en", "es", "et", "eu", "fa", "fi", "fo", "fr", "gd", "gl", "gn", "gu", "he", "hi", "hr", "hu", "hy", "id", "is", "it", "jp", "ka", "kk", "km", "kn", "ko", "ks", "la", "lo", "lt", "lv", "mi", "mk", "ml", "mn", "mr", "ms", "mt", "my", "nb", "ne", "nl", "or", "pa", "pl", "pt", "rm", "ro", "ru", "sa", "sb", "sd", "si", "sk", "sl", "so", "sq", "sr", "sv", "sw", "ta", "te", "tg", "th", "tk", "tn", "tr", "ts", "tt", "uk", "ur", "uz", "vi", "xh", "yi", "zh", "zu"
    ];
    var regex = new RegExp("\.?(\."+domainExtensions.join('|')+")+$");
    return hostName.replace(regex,'');
}

虽然不那么优雅,但在大多数常规情况下,它仍在发挥作用——似乎:

function strip(fqdn) {

        fqdn=fqdn.replace(/http:\/\/www./,'');
    var i = fqdn.lastIndexOf('.');
    var n=fqdn.substr(i,fqdn.length-1);
    fqdn=fqdn.replace(n,'');

    dot=fqdn.lastIndexOf('.');

    if(dot!=-1) {
    var n2=fqdn.substr(dot,fqdn.length-1);
    fqdn=fqdn.replace(n2,'');   
    }

    return fqdn;

}
更好的一个:

function strip_dom(fqdn) {

    pattern=/\.+[0-9A-Za-z]+\./;
    fqdn=fqdn.match(pattern);

    fqdn=fqdn.join(fqdn,'');

    fqdn=fqdn.replace(/\./g,'');

    return fqdn;


}

不适用于子域(用点分隔),但有一些调整…

不太优雅,但在大多数常规情况下,它是有效的-似乎:

function strip(fqdn) {

        fqdn=fqdn.replace(/http:\/\/www./,'');
    var i = fqdn.lastIndexOf('.');
    var n=fqdn.substr(i,fqdn.length-1);
    fqdn=fqdn.replace(n,'');

    dot=fqdn.lastIndexOf('.');

    if(dot!=-1) {
    var n2=fqdn.substr(dot,fqdn.length-1);
    fqdn=fqdn.replace(n2,'');   
    }

    return fqdn;

}
更好的一个:

function strip_dom(fqdn) {

    pattern=/\.+[0-9A-Za-z]+\./;
    fqdn=fqdn.match(pattern);

    fqdn=fqdn.join(fqdn,'');

    fqdn=fqdn.replace(/\./g,'');

    return fqdn;


}

不适用于子域(用点分隔),但有一些调整…

您的示例中的预期输出是什么?@PaulS。他们把它放在底部
name
应该包含“mydomainname”那么
something.org.uk
http://www.example.com
http://foo.example.com
http://example.com
可能都有不同的content@Quentin不要忘记
example.us
example.it
example.de
,等等。您的示例中的预期输出是什么?@PaulS。他们把它放在底部
name
应该包含“mydomainname”那么
something.org.uk
http://www.example.com
http://foo.example.com
http://example.com
可能都有不同的content@Quentin不要忘记
example.us
example.it
example.de
,等等,我喜欢这个解决方案!但是,对于混乱的输入,它在Chrome中返回了
“newtab”
,在Firefox中返回了当前主机。@marsze当然你需要先验证你的输入,但这不是问题所在。如果没有DOM怎么办?就像nodejs一样。@DanLee@DJDavid98对于仅仅获取域名来说似乎是一个巨大的开销,你不觉得吗?我喜欢这个解决方案!但是,对于混乱的输入,它在Chrome中返回了
“newtab”
,在Firefox中返回了当前主机。@marsze当然你需要先验证你的输入,但这不是问题所在。如果没有DOM怎么办?就像nodejs一样。@DanLee@DJDavid98仅仅获得域名就好像是一笔巨大的开销,你不这么认为吗?