2

これは、ハイフンも含む文字列から符号付き数値を抽出するという一般的な問題を扱います。

誰かが次の正規表現を考え出すことができますか?

 "item205"             => 205  
 "item-25              => -25  
 "item-name-25"        => -25  

基本的に、他の場所ではハイフンを無視して、記号を含め、文字列の最後まで数字を抽出する必要があります。

以下は最初の2つで機能しますが、最後の2つでは「-name-25」を返します。

var sampleString = "item-name-25";
sampleString.replace(/^(\d*)[^\-^0-9]*/, "")

ありがとう!

4

2 に答える 2

6

代わりに使用できます.match

"item-12-34".match(/-?\d+$/);  // ["-34"]

正規表現は、「ハイフンの可能性、次に1つ以上の数字、次に文字列の終わり」と言います。

于 2012-12-07T17:38:46.953 に答える
4

使用しないでくださいreplace。代わりに、match実際に必要なものの正規表現を使用して記述します(これははるかに簡単だからです)。

var regex = /-?\d+$/;
var match = "item-name-25".match(regex);
> ["-25"]
var number = match[0];

^ただし、正規表現についての1つのことは、文字クラスでは、否定された文字クラスとしてマークするために、意味のある1回(最初に)しか使用できないことです。すべての要素に対して個別に機能するわけではありません。つまり、文字クラスは実際には「-^または数字ではない任意の文字」に対応します。

于 2012-12-07T17:39:13.883 に答える