0

JavaScript を使用して -- ファイル拡張子 "jpg" の直前にある数字 (この場合は "300") を取り出して調べる必要があります。

var ファイル名 = 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);
4

6 に答える 6

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);
于 2012-09-28T05:35:22.757 に答える
0

これを試して:

'2012_honda_odyssey_passenger-minivan_ex_s_oem_2_300.jpg'.match(/[0-9]+(?=\.jpg)/)[0]
于 2012-09-28T05:39:34.220 に答える
0

次のような正規表現_(\d+)\..+?$を使用すると、番号をグループに一致させて抽出できます。上記の正規表現は、アンダースコア ( _) の後に 1 つ以上の数字 ( \d+) が続き、その後にピリオド ( \.) が続き、その後にいくつかの文字 ( .+?) が続き、最後に文字列の末尾( ) に一致する必要があります$

その後、この前の SO の質問を参照して、後でこれらのグループにアクセスする方法を確認できます。

于 2012-09-28T05:35:29.437 に答える
0
var num=parseInt(filename.replace(/^.*?([0-9]+).jpg$/i,"$1"),10);
于 2012-09-28T05:35:31.487 に答える
0

複雑な文字列パターン マッチングを行う場合を除き、通常は正規表現を避けることが最善です。次のようなものが必要なものを取得します。

var num = +filename.substring(
  filename.lastIndexOf('_') + 1,
  filename.lastIndexOf('.')
);
于 2012-09-28T05:36:29.747 に答える
-1

正規表現は、これほど単純なものにはやり過ぎだと思います。これを使用します。

var start = filename.lastIndexOf('_') + 1; 
var end = filename.lastIndexOf('.');
var num = parseInt(filename.substring(start, end), 10);
于 2012-09-28T05:37:59.763 に答える