url拆解成origin、文件名、hash拆解成示例的格式。

假如Url: http://www.baidu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
1、获取 origin

// 正则提取 
// const originReg = /^https?:\/\/[\w-.]+(:\d+)?/i
// 第一种获取 origin
const originArr = new RegExp('^https?://[\\w-.]+(:\\d+)?', 'i').exec(url)
console.log('origin=22==:', originArr)
const url = 'http://www.baidu.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name'
// console.log('origin===:', originReg.test(url))
// 第二种获取 origin
// const originReg = /^https?:\/\/[\w-.]+(:\d+)?/i
// console.log('origin=11==:', url.match(originReg))
// console.log('origin=22==:', originReg.exec(url))

2、获取文件名称

const getFiles = (url) => {
  const endUrl = url.split('//')[1]
  const startIndex = endUrl.indexOf('/')
  const curFiels = endUrl.substring(startIndex)
  if (curFiels && curFiels.indexOf('?') > -1) {
    return  curFiels.split('?')[0]
  } else {
    return curFiels
  }
}
console.log('===', getFiles(url))

3、获取hash

const anchor = (url) => {
  const anchorName = url && url.indexOf('#') > -1 ? url.split('#')[1] : ''
  return anchorName
}
console.log('=anchor==:', anchor(url))

4、获取参数

/**
 * @description 获取参数 可能存在锚点
 * @param url String 需要处理URL
 * @param paramsKey string 需要获取参数值的名称,可以不传
 * */ 
const getParams = (url, paramsKey) => {
  let paramStr = ''
  if (url.indexOf('?') > -1) {
    paramStr = url.split('?')[1]
  }
  const params = paramStr.indexOf('#') > -1 ?  paramStr.split('#')[0] : paramStr
  const parmasArr = params.split('&')
  let allPObj = {}
  parmasArr && parmasArr.length && parmasArr.map(item => {
    const curItemArr = item.split('=')
    allPObj[curItemArr[0]] = curItemArr[1]
  })

  if (paramsKey) {
    return allPObj[paramsKey]
  } else {
    return allPObj
  }
}
console.log('=all param==:', getParams(url))
console.log('=ID param==:', getParams(url, 'ID'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刺客-Andy

努力将爱好变成更有价值的事物

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值