-2

4 ~ 8 個の数字のシーケンスを許可する reg 式を使用していますが、最初の 2 つと最後の 2 つを同じにすることはできません。

例えば

1245612 - 一致を含む
346731 - 一致なし
789287 - 一致なし 789278 - 一致
を含む

4

4 に答える 4

1

最初の 2 桁と最後の 2 桁を同じにして一致させたい場合 (例ではこれが示唆されています)、正規表現^(\d\d)\d{0,4}\1$が適切です。

例の正規表現については、 http://regexr.com?33uuuを参照してください。

于 2013-02-28T14:58:38.587 に答える
1

次の 2 つの可能性があります。

  1. 2 つのペアが同じ場合に一致

    ^(\d{2})\d{0,4}\1$
    

    ここでRegexrを参照してください

  2. 2 つのペアが異なる場合に一致

    ^(\d{2})\d{0,4}(?!\1)\d{2}$
    

    ここでRegexrを参照してください

^文字列の先頭と文字列の末尾のアンカー$は重要です。そうしないと、部分的な一致が得られます。

于 2013-02-28T15:07:39.120 に答える
0

説明した内容が実際に必要な場合 (最初の 2 桁と最後の 2 桁が一致しないようにするため)、次のようにすることができます。

(?!(\d\d)\d{0,4}\1)\d{4,8}

式の最初の部分は、 [2 桁の数字][0 から 4 桁の間][同じ 2 桁の数字] という形式の式に一致しないことを主張し、それ以外は、長さ4~8。

この正規表現を実際に試してみてください (Javascript スタイルの正規表現を使用):

http://regexpal.com/?flags=g®ex=(%3F!(%5Cd%5Cd)%5Cd%7B0%2C4%7D%5C1)%5Cd%7B4%2C8%7D&input=3366

于 2013-02-28T15:01:28.840 に答える
0

このタスクでは、正規表現は必要ないか、このタスクを理解していません。U は、i[0] と i[1] を i[n] と i[n-1] と比較するだけで済みます。

于 2013-02-28T15:01:49.473 に答える