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)

正規表現の視覚化

これはDebuggex Demoと JSFiddle demoです。

于 2013-11-11T16:11:20.710 に答える
0
var s = "Hello_World_1_x.txt";
var a = s.split(/[._]/);
console.log( a[a.length-2] );   // "x"

これは、「文字列をピリオドまたはアンダースコアで分割し、最後から 2 番目の部分を選択する」ことを示しています。

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 に答える