3

次のようにフォーマットされると予想される文字列があります。

{List:[Names:a,b,c][Ages:1,2,3]}

私のクエリは、javascript で次のようになります。

var str = "{List:[Names:a,b,c][Ages:1,2,3]}";
var result = str.match(/^\{List:\[Names:([a-zA-z,]*)\]\[Ages:([0-9,]*)\]\}$/g);

注: この正規表現を使用すると、「Ages:,,,」のようなもので合格することは認識していますが、現時点では心配していません。

私はこれを取り戻すことを期待していました:

result[0] = "{List:[Names:a,b,c][Ages:1,2,3]}"
result[1] = "a,b,c"
result[2] = "1,2,3"

しかし、正規表現に対して何をしているように見えても、複数の一致の配列を返すことを拒否し、完全な文字列を取得するだけです(パスするため、これが開始です):

result = ["{List:[Names:a,b,c][Ages:1,2,3]}"]

私はすでにここでたくさんの質問や他の「イントロ」記事を見てきましたが、どれもこの基本的なものに対処していないようです. 私が見落としているのはばかげたことだと確信していますが、それが何であるかは本当にわかりません:(

4

2 に答える 2

2

あなたはフォームを探していますneedle.exec(haystack)

私のコンソールから:

> haystack = "{List:[Names:a,b,c][Ages:1,2,3]}";
"{List:[Names:a,b,c][Ages:1,2,3]}"

> needle = /^\{List:\[Names:([a-zA-z,]*)\]\[Ages:([0-9,]*)\]\}$/g ;
/^\{List:\[Names:([a-zA-z,]*)\]\[Ages:([0-9,]*)\]\}$/g

> needle.exec(haystack);
["{List:[Names:a,b,c][Ages:1,2,3]}", "a,b,c", "1,2,3"]
于 2013-08-19T16:51:36.523 に答える