Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
560 views
in Technique[技术] by (71.8m points)

正则如何提取网址的主域名的首字母?

    let arr = [
        'http://baidu.com',
        'https://baidu.com',
        'http://map.baidu.com',
        'https://map.baidu.com',
        'http://www.baidu.com',
        'https://www.baidu.com',
        'www.baidu.com',
        'baidu.com',
        'map.baidu.com',
        'pic.baidu.com',

        'http://baidu.com.cn',
        'https://baidu.com.cn',
        'http://map.baidu.com.cn',
        'https://map.baidu.com.cn',
        'http://www.baidu.com.cn',
        'https://www.baidu.com.cn',
        'www.baidu.com.cn',
        'baidu.com.cn',
        'map.baidu.com.cn',
        'pic.baidu.com.cn',


        'http://baidu.com/mm',
        'https://baidu.com/mm',
        'http://map.baidu.com/mm',
        'https://map.baidu.com/mm',
        'http://www.baidu.com/mm',
        'https://www.baidu.com/mm',
        'www.baidu.com/mm',
        'baidu.com/mm',
        'map.baidu.com/mm',
        'pic.baidu.com/mm',

        'http://baidu.com.cn/mm/c',
        'https://baidu.com.cn/mm/c',
        'http://map.baidu.com.cn/mm/c',
        'https://map.baidu.com.cn/mm/c',
        'http://www.baidu.com.cn/mm/c',
        'https://www.baidu.com.cn/mm/c',
        'www.baidu.com.cn/mm/c',
        'baidu.com.cn/mm/c',
        'map.baidu.com.cn/mm/c',
        'pic.baidu.com.cn/mm/c',   

        'http://www.baidu.co.jp',
        'http://www.baidu.net',
        'http://baidu.fun/mm'

    ]

能匹配外国网址
如日本  .jp   .en 等

如上,以baidu.com为例,都提取 b
facebook.com 为例,都提取f
可适用其他域名。

主旨:浏览器地址栏能打开的网址,就提取它的域名首字母。

在线正则工具 https://regex101.com/


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
    let test_str = [
        'http://baidu.com',
        'https://baidu.com',
        'http://map.baidu.com',
        'https://map.baidu.com',
        'http://www.baidu.com',
        'https://www.baidu.com',
        'www.baidu.com',
        'baidu.com',
        'map.baidu.com',
        'pic.baidu.com',

        'http://baidu.com.cn',
        'https://baidu.com.cn',
        'http://map.baidu.com.cn',
        'https://map.baidu.com.cn',
        'http://www.baidu.com.cn',
        'https://www.baidu.com.cn',
        'www.baidu.com.cn',
        'baidu.com.cn',
        'map.baidu.com.cn',
        'pic.baidu.com.cn',


        'http://baidu.com/mm',
        'https://baidu.com/mm',
        'http://map.baidu.com/mm',
        'https://map.baidu.com/mm',
        'http://www.baidu.com/mm',
        'https://www.baidu.com/mm',
        'www.baidu.com/mm',
        'baidu.com/mm',
        'map.baidu.com/mm',
        'pic.baidu.com/mm',

        'http://baidu.com.cn/mm/c',
        'https://baidu.com.cn/mm/c',
        'http://map.baidu.com.cn/mm/c',
        'https://map.baidu.com.cn/mm/c',
        'http://www.baidu.com.cn/mm/c',
        'https://www.baidu.com.cn/mm/c',
        'www.baidu.com.cn/mm/c',
        'baidu.com.cn/mm/c',
        'map.baidu.com.cn/mm/c',
        'pic.baidu.com.cn/mm/c',   

        'http://www.baidu.co.jp',
        'http://www.baidu.net',
        'http://baidu.fun/mm'        
    ]

    let r1 = /([w-]+?.[w-]+?.[w]{2}?$)/
    let r2 = /([w-]+?.[w-]+?$)/
    let r3 = /([w-]+?.[w-]+?.[w]{2}?/)/
    let r4 = /([w-]+?.[w-]+?/)/
    for (let str of test_str) {
        if (str.match(r1)) {
            result = str.match(r1)
        } else if (str.match(r2)) {
            result = str.match(r2)
        } else if (str.match(r3)) {
            result = str.match(r3)
        } else if (str.match(r4)) {
            result = str.match(r4)
        } else {
            result = '-'
        }
        console.log(result[1][0])
    }

输出全是 b


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...