私の文字列は[1212,1212],[1212,11212],...
1212,1212
たとえば、各値を配列に抽出して、1 つのペアとして一連のステップを評価したいと思います。
試してみ/[[0-9],[0-9]]/
ましたが、私が望むようにタスクを実行していませんでした。基本的に、私は正規表現の初心者です。誰か助けてください。
前もって感謝します
私の文字列は[1212,1212],[1212,11212],...
1212,1212
たとえば、各値を配列に抽出して、1 つのペアとして一連のステップを評価したいと思います。
試してみ/[[0-9],[0-9]]/
ましたが、私が望むようにタスクを実行していませんでした。基本的に、私は正規表現の初心者です。誰か助けてください。
前もって感謝します
正規表現が正しく機能するためには、いくつかの変更が必要です。
/\[[0-9]+,[0-9]+\]/g
[
角かっこは特別な意味があるため、エスケープする必要があります。[0-9]
は 1 桁のみに一致するため、1 つまたは複数の桁に一致する数量子が必要であり、+
したがって[0-9]+
.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);
一致させたいリテラル括弧をエスケープする必要があります。を使用\d
して「任意の数字」に一致させることもできます。これにより、より整頓されます。また、1桁しか一致していません。「1つ以上」(+
数量詞)に一致する必要があります
/\[\d+,\d+\]/g
そのg
修飾子は文字列内のすべての一致を検索しますが、それ以外の場合は最初の一致のみが検索されます。
コンマの前後の 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);
}