使用javascript - 我需要提取并检查“jpg”文件扩展名之前出现的数字,在本例中为“300”。
var filename = 2012_honda_odyssey_passenger-minivan_ex_s_oem_2_300.jpg
将这个数字拉出来的最佳方式是什么 - 我总是可以假设它将位于字符串中的最后一个“_”和最后一个“。”之间。在文件扩展名之前。
我猜我需要用正则表达式做点什么。像这样....
var num = parseInt(filename.match(/some-regex-here/), 10);
除了
我确实想到了......但它看起来非常笨拙。
var filename = "2012_honda_odyssey_passenger-minivan_ex_s_oem_2_300.jpg";
var num = parseInt(filename.split('_').splice(-1,1).toString().split(".").splice(0,1).toString(), 10);
答案 0 :(得分:1)
var filename = "2012_honda_odyssey_passenger-minivan_ex_s_oem_2_300.jpg";
var regex = /^.*_(\d+)\.jpg?$/;
var match = regex.exec(filename);
var number = Number(match[1]);
console.log(number);
答案 1 :(得分:0)
这样的正则表达式:_(\d+)\..+?$
应该允许您匹配并将数字提取到组中。上面的正则表达式应匹配下划线(_
)后跟一个或多个数字(\d+
),后跟一个句点(\.
),后面跟着一些字母({{ 1}})最后是字符串的结尾(.+?
)。
然后,您可以参考this以前的SO问题,了解以后如何访问这些群组。
答案 2 :(得分:0)
var num=parseInt(filename.replace(/^.*?([0-9]+).jpg$/i,"$1"),10);
答案 3 :(得分:0)
避免使用正则表达式通常是最好的,除非您通常进行复杂的字符串模式匹配。类似的东西会得到你想要的东西:
var num = +filename.substring(
filename.lastIndexOf('_') + 1,
filename.lastIndexOf('.')
);
答案 4 :(得分:0)
试试这个:
'2012_honda_odyssey_passenger-minivan_ex_s_oem_2_300.jpg'.match(/[0-9]+(?=\.jpg)/)[0]
答案 5 :(得分:-1)
我觉得正则表达式对于这么简单的事情来说太过分了,我只想用它:
var start = filename.lastIndexOf('_') + 1;
var end = filename.lastIndexOf('.');
var num = parseInt(filename.substring(start, end), 10);