2011-07-02 2 views

答えて

2

代わりにmatchg(グローバル)フラグを使用してください。

jsFiddle

数字を個別に一致させたくない場合は、\d+に変更してください。

jsFiddle

+0

ありがとうございます!それは私が探していたものでした。 – iWebaholic

+0

彼はもともとポジションを求めていたのですか? :) – naveen

+1

@naveenそれはそれのように見えますが、その後、OPはこれがまさに彼らが必要としていると言った:) – alex

0

2番目の番号の位置はどのように取得できますか?

myString.indexOf(myString.match(/ \ D/G)[1])

があるどのように多くのヒットを見つけるための方法はありますか?

myString.match(/ \ D/G)もちろん

.LENGTH、私は上記のインデックス1をハードコーディングしている、あなたは適切なチェックを行う必要があります。

0

あなたがexecを使用する場合:

var myString = "20 fur bar 50"; 
var numberPositions = []; 
var numberRe = /\d+/g; 
for (var match; (match = numberRe.exec(myString));) { 
    numberPositions.push(
     [numberRe.lastIndex - match[0].length, numberRe.lastIndex]); 
} 

、その後numberPositionsは(包括的)、終了(排他)のペア開始の配列です:

[[0,2],[11,13]] 

[0,2]文字の範囲であります20の場合は(end-exclusive)、50の場合は[11,13]が対応します。

正規表現は/\d+/の代わり/\d/ので、代わりに2のための別々の範囲を取得すると0あなたが全体の整数のための1つの範囲を得ることがある使用しました。

関連する問題