0

私の文字列は[1212,1212],[1212,11212],...

1212,1212たとえば、各値を配列に抽出して、1 つのペアとして一連のステップを評価したいと思います。

試してみ/[[0-9],[0-9]]/ましたが、私が望むようにタスクを実行していませんでした。基本的に、私は正規表現の初心者です。誰か助けてください。

前もって感謝します

4

3 に答える 3

2

正規表現が正しく機能するためには、いくつかの変更が必要です。

/\[[0-9]+,[0-9]+\]/g
  1. [角かっこは特別な意味があるため、エスケープする必要があります。
  2. [0-9]は 1 桁のみに一致するため、1 つまたは複数の桁に一致する数量子が必要であり、+したがって[0-9]+.
  3. グローバル修飾子を使用して、gすべての一致を抽出します。

次に、次のようにすべての値を配列に抽出できます。

var input = "[1212,1212],[1212,11212]";
var pattern = /\[[0-9]+,[0-9]+\]/g;
var result = [];
var currentMatch;
while((currentMatch = pattern.exec(input)) != null) {
    result.push(currentMatch.toString());
}
result;

または、一度に 1 つずつ連続して一致を見つける必要がない場合は、String.match()@Matthew Mcveigh のように使用できます。

var input = "[1212,1212],[1212,11212]";
var result = input.match(/\[[0-9]+,[0-9]+\]/g);
于 2013-11-02T11:57:00.303 に答える
1

一致させたいリテラル括弧をエスケープする必要があります。を使用\dして「任意の数字」に一致させることもできます。これにより、より整頓されます。また、1桁しか一致していません。「1つ以上」(+数量詞)に一致する必要があります

/\[\d+,\d+\]/g

そのg修飾子は文字列内のすべての一致を検索しますが、それ以外の場合は最初の一致のみが検索されます。

于 2013-11-02T11:54:48.197 に答える
1

コンマの前後の 1 つ以上の数字を一致させるだけでよいように思われるので、次のようにします。

"[1212,1212],[1212,11212]".match(/\d+,\d+/g)

これにより、配列が得られます:["1212,1212", "1212,11212"]

ペアを抽出するには:

var result = "[1212,1212],[1212,11212]".match(/\d+,\d+/g);

for (var i = 0; i < result.length; i++) {
    var pair = result[i].match(/\d+/g),
        left = pair[0], right = pair[1];

    alert("left: " + left + ", right: " + right);
}
于 2013-11-02T12:03:49.900 に答える