正则表达式 - JavaScript 正则截取第二个 / 后面的内容 要求性能最优
PHP中文网
PHP中文网 2017-04-11 13:08:03
[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]方法性能最优。

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(7)
高洛峰

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

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

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

'/test/gagaga'.replace(/\/.+\//,'');  //"gagaga"
'/hahaha/yr-1-k'.replace(/\/.+\//,''); //"yr-1-k"
巴扎黑
  1. 零宽断言后向匹配

  2. exec方法,部分匹配

PHPz
var s = "/test/gagaga"
var r = (s.match(/^\/.*?\/(.*)$/) || [])[1]
阿神
    /*字母、数字...短横线?*/
    /\/([a-zA-Z0-9\-]+)$/g
大家讲道理

要不要斜杠?
有斜杠 var reg = //[^/]+$/
无斜杠 var reg = /[^/]+$/

PHP中文网
let re = /\/.*(?=\/)\/(.*)/;
"/hahaha/yr-1-k".replace(re, "$1");
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号