js匹配获取一级域名后的字符串

研究了好一会,没搞定(lll¬ω¬)

var imgarr = ['https://www.baidu.com/123.jpg','https://www.baidu.com/abc.jpg','https://www.baidu.com/nana.jpg']

输出结果是字符串

var imgarr = '/123.jpg','/abc.jpg','/nana.jpg' 

我不会匹配一级域名,求指教

阅读 8.7k
8 个回答

如果不考虑兼容性,这可能是最好的方法:URL

var imgarr = ['https://www.baidu.com/123.jpg', 'https://www.baidu.com/abc.jpg', 'https://www.baidu.com/nana.jpg'];
console.log(imgarr.map(v => (new URL(v)).pathname));//["/123.jpg", "/abc.jpg", "/nana.jpg"]

var imgarr = ('https://www.baidu.com/index/123.jpg'.match(/\b\/.*/g) || [])[0]

window.location.pathname

一个比较靠谱的一级域名匹配表达式/((https?|ftp|file):\/\/)?[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+\.[-A-Za-z+]+\/+/g

let imgarr = ['https://www.baidu.com/123.jpg','https://www.baidu.com/abc.jpg','https://www.baidu.com/nana.jpg'],
    reg = /((https?|ftp|file):\/\/)?[-A-Za-z0-9+&@#\/%?=~_|!:,.;]+\.[-A-Za-z+]+\/+/g;

imgarr = imgarr.map(item => item.replace(reg, '/'))
'http://www.baidu.com/123.jpg'.replace(/https?\:\/\/[a-z0-9]+\.?[a-z0-9]+\.[a-z]*\//, "/")

clipboard.png

/http(?:s?):\/\/[^\/]*(\/.*)/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题