3

我有一个字符串,例如“Hello_World_1_x.txt”,我想取最后一个下划线之后和.txt之前的内容。.txt 和下划线一样始终存在,但可能有很多下划线。我使用 .split() 删除了最后 4 个字符,但我只想要 LAST 下划线之后的内容。到目前为止,我的正则表达式只给了我第一个下划线之后的内容。

4

5 回答 5

5

您可以使用标准字符串函数:

var result = s.substring(s.lastIndexOf("_") + 1, s.lastIndexOf("."));
于 2013-11-11T16:07:56.793 回答
1

试试这个正则表达式:

/_([^_.]*)\.txt$/i

使用String#match

 var r = 'Hello_World_1_x.txt'.match(/_([^_.]*)\.txt$/)[1];
 //=> x
于 2013-11-11T16:05:48.767 回答
1

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

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

正则表达式可视化

这是一个Debuggex 演示和一个 JSFiddle演示

于 2013-11-11T16:11:20.710 回答
0

你去:

编辑:误读字符串名称 - 现在更新:

function getLastValue(string, splitBy) {
  var arr = string.split(splitBy);
  return arr[arr.length-1].split(".")[0]
}


getLastValue("Hello_World_1_x.txt","_"); //"x"
于 2013-11-11T16:06:54.813 回答
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"
于 2013-11-11T16:08:09.023 回答