搜尋

首頁  >  問答  >  主體

JavaScript 正则截取第二个 / 后面的内容 要求性能最优

问题

正则截取第二个 / 后面的内容
例如 /test/gagaga
得到 gagaga
又如 /hahaha/yr-1-k
得到 yr-1-k

不可确定的是第二个 / 后面的内容:可能有英文,有数字,有短横线(其余没有)

可以确定的是被截取的字符串第一个字符肯定是 / ;以及两个 / 之间肯定是一串英文

可以普通的单次截取,又可以多次截取,也可以通过截取两个 / 之间的字符然后替代原字符串。

但是,怎样的性能最好呢?

采纳

六个可用回答 : 性能测试结果 ——题主自家的 Chrome 53

边城:每秒可执行约 5,790,000 次;
xzavier:每秒可执行约 5,390,000 次;
挺问中原:每秒可执行约 4,310,000 次;
同意并接受:每秒可执行约 6,590,000 次;
hping:每秒可执行约 4,730,000 次;
阿傻不傻:每秒可执行约 2,790,000 次;

结果,同意并接受 的.split('/')[2]方法性能最优。


高洛峰高洛峰2940 天前668

全部回覆(3)我來回復

  • 三叔

    三叔2016-11-10 14:18:24

    零宽断言后向匹配

    exec方法,部分匹配


    回覆
    0
  • 欧阳克

    欧阳克2016-11-10 14:18:12

    可以确定的是被截取的字符串第一个字符肯定是 / ;以及两个 / 之间肯定是一串英文,反正都要用到字符串的方法,取值步骤少,代码少,相应性能也会好。就你说的这样:

    '/test/gagaga'.replace(/\/.+\//,'');  //"gagaga"
    '/hahaha/yr-1-k'.replace(/\/.+\//,''); //"yr-1-k"


    回覆
    0
  • 三叔

    三叔2016-11-10 14:17:55

    split 就可以了,最简洁了吧~

    '/test/gagaga'.split('/')[2]
    "gagaga"
    '/hahaha/yr-1-k'.split('/')[2]
    "yr-1-k"

      


    回覆
    0
  • 取消回覆