提取字符串JavaScript的非常具体的部分

时间:2013-11-11 16:03:30

标签: javascript regex string

我有一个字符串,例如“Hello_World_1_x.txt”,我想在最后一个下划线之后和.txt之前取任何东西。 .txt将始终存在于下划线中,但可能存在许多下划线。我使用.split()来删除最后4个字符,但我只想在最后一个下划线后才会删除。到目前为止,我的正则表达式只给了我第一个下划线后的最新信息。

5 个答案:

答案 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)

如果你想使用正则表达式,试一试:

[^_]*(?=\.txt)

Regular expression visualization

这是Debuggex Demo和JSFiddle demo

答案 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"