【问题标题】:a regular expression to match domains suffixes匹配域后缀的正则表达式
【发布时间】:2013-05-28 11:34:24
【问题描述】:

我需要一些关于构建正则表达式的帮助。

我有一个域名数组和一个 TLD 数组(很长)。示例:

tlds = {
    '.com':{
        1 : '£4.00',
        2 : '£7.50',
        3 : '£11.00',
        4 : '£14.50',
        5 : '£18.00',
    },
    '.org':{
        1 : '£5.00',
        2 : '£10.00',
        3 : '£15.00',
        4 : '£20.00',
        5 : '£25.00',
    },
    '.net':{
        1 : '£6.00',
        2 : '£12.00',
        3 : '£18.00',
        4 : '£24.00',
        5 : '£30.00',
    },
    '.co.uk':{
        1 : '£7.00',
        2 : '£14.00',
        3 : '£21.00',
        4 : '£28.00',
        5 : '£35.00',
    },
    '.com.br':{
        1 : '£9.00',
        2 : '£16.00',
        3 : '£22.00',
        4 : '£28.00',
        5 : '£34.00',
    }
}

domainResults = {
    0 : {
        'domain' : 'anything.com',
        'status' : 'available'
    },
    1 : {
        'domain' : 'anything-weird.org',
        'status' : 'available'
    },
    2 : {
        'domain' : 'anything-amazing.co.uk',
        'status' : 'available'
    }
}

对于每个域名,我想分配正确的 tld。 数组中的每个域名始终与其中一个 TLD 匹配。

我认为解决方案应该将每个 TLD 作为 REGEX 循环,直到它与我正在循环的域名匹配。

我知道这会很棘手,因为我始终拥有至少 26 个 TLD,并且我想确保它们都不匹配,以防止错误显示定价(例如:以 '.com.br 结尾的域名' 绝不应该是正则表达式 '.com' 的结果,而仅适用于 tld '.com.br' )。

【问题讨论】:

标签: javascript regex domain-name tld


【解决方案1】:

假设域字符串中没有子域部分

for(var index in domainResults){
    var domain = domainResults[index].domain;
    var tld = domain.substring(domain.indexOf("."));
    // now tlds[tld] gives the corresponding tld object
    console.log(tlds[tld]);
}

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    相关资源
    最近更新 更多