1
var re = /^\[*:*\]*/;
alert(re.test("aa"));

常に true をアラートします (任意の文字列に対して)。私は何を間違っていますか?文字列の先頭に [445:123] のようなものがあるかどうかを確認する必要があります。

4

3 に答える 3

5

あなたの正規表現は

  • 文字列の先頭に...
  • ゼロ以上の[文字が存在する可能性があります...
  • その後、ゼロ以上の:文字...
  • ゼロ以上の]文字。

文字列「aa」がそれに一致します。おそらく次のようなものが必要です。

var re = /^\[\d+:\d+\]/;

量指定子は「+1 つ以上」を*意味し、「ゼロ以上」を意味します。\dエスケープは「任意の数字」を意味します。

*編集 — 正規表現が次のようなものと一致する必要がある場合

[12:2:17:419]

同様に、それは

var re = /^\[\d+(:\d+)+\]/;
于 2013-10-22T00:02:37.943 に答える
1

[任意の数の、その後に任意の数の 、その後に:任意の数の をチェックしています]。これは任意の数であることに注意してください。これらのいずれかが 0 回出現すると、有効な結果になります。

あなたがやろうとしているように聞こえるのは、もっと似たようなものですvar re= /^\[\d+:\d+\]/;

于 2013-10-22T00:03:00.160 に答える