js截取url的一部分

我想用一个方法截取url的一部分,例如:https://www.xxx.com.cn/html-x...其中html四个字符是确定存在的,现在想取html-xxx后面的aaa,怎么做,有没有简单的办法,注意

  1. 只有html是确定存在的,可能是html-aaa,可能是html_aaa,也可能只有html,总之是任何url合法字符
  2. html-xxx/后面的aaa也可以是多变的任意url合法字符,可能是aaa-bbb,aaa_bbb,aaaBBB等等
阅读 6.5k
7 个回答

试试这个

var reg = /\/html.*?\/(.*?)\//
url.match(reg)[1]
// ?是懒惰模式,就是以短又小的长度匹配正则。
// 和一楼解答类似,不过感觉你的需求还不是很明确。或者说分别有什么场景。
var url = 'https://www.xxx.com.cn/html-xxx/strong-aaa/strong/bb/index.html';
var reg = /\/html-[^\/]*\/([^\/]+)/;
var result = url.match(reg)[1];
console.log(result); // 'strong-aaa'

\/这是对/的转义。
([^\/]*)[^\/]这个表示不是/的任意字符。*表示0个或者多个。+表示1个或多个。()表示分组捕获。

关于正则,推荐前端网老姚的系列文章和迷你书。正则表达式系列总结,值得一读。

var url = 'https://www.xxx.com.cn/html-xxx/strongaaa/strong/bb/index.html'
var reg = /\/html-\w+\/(\w+)/
var result = url.match(reg)[1]
// 结果为 "strongaaa"

对正则是在头疼,自己最笨拙的办法

const url = 'www.sss.com.cn/html-xxx/saaa-daa/sss/index.html';
const htmlStrArr = url.match(/html\S*\//);
        if (htmlStrArr) {
            const htmlStr = htmlStrArr[0];
            const merchantStart = htmlStr.indexOf('/');
            const merchantStr = htmlStr.substring(merchantStart + 1);
            merchant = merchantStr.substring(0, merchantStr.indexOf('/'));
            console.log(merchant)
        }
const a = 'https://www.xxx.com.cn/html_xxx/strongaaa/strong/bb/index.html,'   
console.log(a.match(/html\W*\w*(?=\/)/)[0].replace(/html(\w{1}|\W{1})/,'')) /// 'xxx'

用js字符串对象方法应该可以做到,正则容易写漏

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题