1

ファイル名をパーツに分割する単純な JavaScript 関数を作成しました。「image01.png」タイプのファイル名を指定すると、「image」、「01」、「png」に分割されます。

これには、次の正規表現を使用します。

var reg = /(\D+)(\d+).(\S+)$/;

これは機能します。

ただし、day12Image01.png を「day12Image」、「01」、「png」のように分割できるようにしたいと考えています。一般に、拡張の直前に該当しない限り、任意の数の追加の数字を本文に関連付けたいと考えています。

私は試しました:

var reg = /(.+)(\d+).(\S+)$/;

または代替:

var reg = /(\S+)(\d+).(\S+)$/;

紛らわしいことに (私には)、これらの正規表現を「image01.png」に適用すると、「image0」、「1」、「png」という分解が得られます。

これらの場合、数値インデックスではなくボディに「0」が割り当てられているのはなぜですか?

フィードバックをお寄せいただきありがとうございます。

4

3 に答える 3

1

貪欲でない正規表現 /(\S+?)(\d+).(\S+)$/ を使用してみてください。私の知る限り、これはjavascriptで機能するはずです。

于 2013-02-08T11:01:05.700 に答える
0

デフォルトでは、キャプチャ グループは貪欲であり、可能な限り多くをキャプチャします。また、+1 つまたは複数を意味するため、最後の桁に一致し、最初の数字を.または に残すことができ\Sます。それらを貪欲にしないでください?

var reg = /(.+?)(\d+).(\S+)$/;

または

var reg = /(\S+?)(\d+).(\S+)$/;
于 2013-02-08T11:01:46.837 に答える
0

正常に動作する可能性のある正規表現の 1 つを次に示します。

/^(.+?)(\d+)\.(\S+)$/

ドット文字をエスケープする必要があることに注意してください。.そうしないと、正規表現はそれを「任意の文字」(いわゆる「特殊ドット」)と見なします。

于 2013-02-08T10:59:23.457 に答える