如何使用JavaScript捕获文件路径中下划线后的所有内容?

如何使用JavaScript捕获文件路径中下划线后的所有内容?,javascript,parsing,Javascript,Parsing,如何捕获文件名中最后一个下划线之后的所有内容 例如:24235235adasd_4.jpg转换为4.jpg 再次感谢 var end = "24235235adasd_4.jpg".match(/.*_(.*)/)[1]; 编辑:哎呀,ungreedy修饰符错了 编辑2:运行基准测试后,这是最慢的方法。不要使用它;)以下是基准和结果 基准测试: var MAX = 100000, i = 0, s = new Date(), e = new Date()

如何捕获文件名中最后一个下划线之后的所有内容

例如:
24235235adasd_4.jpg
转换为
4.jpg

再次感谢

var end = "24235235adasd_4.jpg".match(/.*_(.*)/)[1];
编辑:哎呀,ungreedy修饰符错了

编辑2:运行基准测试后,这是最慢的方法。不要使用它;)以下是基准和结果

基准测试:

var MAX     = 100000,     i =  0, 
    s       = new Date(), e = new Date(), 
    str     = "24235235ad_as___4.jpg",
    methods = {
        "Matching":  function() { return str.match(/.*_(.*)/)[1];               },
        "Substr":    function() { return str.substr(str.lastIndexOf('_') + 1);  },
        "Split/pop": function() { return str.split('_').pop();                  },
        "Replace":   function() { return str.replace(/.*_/,'');                 }
    };

console.info("Each method over %d iterations", MAX);
for ( var m in methods ) {
    if ( !methods.hasOwnProperty(m) ) { continue; }
    i = 0;

    s = new Date();
    do {
        methods[m]();
    } while ( ++i<MAX );
    e = new Date();

    console.info(m);
    console.log("Result: '%s'", methods[m]());
    console.log("Total: %dms; average: %dms", +e - +s, (+e - +s) / MAX);
}
Each method over 100000 iterations
Matching
Result: '4.jpg'
Total: 1079ms; average: 0.01079ms
Substr
Result: '4.jpg'
Total: 371ms; average: 0.00371ms
Split/pop
Result: '4.jpg'
Total: 640ms; average: 0.0064ms
Replace
Result: '4.jpg'
Total: 596ms; average: 0.00596ms
是最快的

"24235235adasd_4.jpg".split('_').pop();

*请注意,对于那些扩展名中有“u”的不常见文件(例如,我见过一些名为
filename.tx_u

+1这是最快的方法。请参阅我的基准测试答案。之前我将其包装在一个
警报()
中,粘贴代码时未删除结束
。现在都修好了:)这真的帮了我大忙。非常感谢。+1提供了最可读的代码,并允许输入不带下划线readable yes,但除了我自己的工作之外,所有其他的回答都有带下划线或不带下划线。@Don,这里有两个带regexp的答案和两个不带下划线的答案。你还想要什么问题标题中应该是“在下划线之后”吗?这里有很多答案。您还有问题吗?不同的JavaScript/ECMAScript实现将以不同的方式执行此基准测试。出于好奇,这里的结果使用了哪个引擎?这将是非常有趣的,看看是否有任何变化的结果对其他引擎。感谢您抽出时间来做这件事!100000匹配、Substr、拆分/弹出、替换IE 8的总MS
5381118427336FF 3.5.5<代码>221、18、62、119铬4.0.223.16<代码>57,27,152,35狩猎530.17<代码>135,52,55,42歌剧10.10<代码>258152156402我的测试是在FF3.5.5/OSX10.5.8上进行的
var foo = '24235235adasd_4.jpg';
var bar = foo.substr(foo.lastIndexOf('_') + 1);
var end = filename.replace(/.*_/,'');