我有一个字符串,例如“Hello_World_1_x.txt”,我想在最后一个下划线之后和.txt之前取任何东西。 .txt将始终存在于下划线中,但可能存在许多下划线。我使用.split()来删除最后4个字符,但我只想在最后一个下划线后才会删除。到目前为止,我的正则表达式只给了我第一个下划线后的最新信息。
答案 0 :(得分:5)
您可以使用标准字符串函数:
var result = s.substring(s.lastIndexOf("_") + 1, s.lastIndexOf("."));
答案 1 :(得分:1)
试试这个正则表达式:
/_([^_.]*)\.txt$/i
使用String#match
:
var r = 'Hello_World_1_x.txt'.match(/_([^_.]*)\.txt$/)[1];
//=> x
答案 2 :(得分:1)
答案 3 :(得分:0)
你去了:
编辑:误读字符串名称 - 现在更新:
function getLastValue(string, splitBy) {
var arr = string.split(splitBy);
return arr[arr.length-1].split(".")[0]
}
getLastValue("Hello_World_1_x.txt","_"); //"x"
答案 4 :(得分:0)
var s = "Hello_World_1_x.txt";
var a = s.split(/[._]/);
console.log( a[a.length-2] ); // "x"
这就是说,“在句号或下划线上拆分字符串,然后选择倒数第二个部分”。或者:
var s = "Hello_World_1_x.txt";
var a = s.split(/[._]/);
a.pop(); var last = a.pop();
console.log( last ); // "x"