2

したがって、0と1の文字列で渡すことができる正規表現(「0010101000111100100011110001101100011」など)を作成し、6つの連続する文字ごとに、そのブロックに少なくとも2つの1が必要であることを確認します。

また、長さが6未満の文字列は通過する必要があります。

文字列の受け渡しの例:

  • ""
  • 「00」
  • 「11000011」
  • 「01010100」

失敗した文字列の例:

  • 「110000000011」
  • 「000001」

これらの例は非常に小さい文字列ですが、任意の長さの文字列を使用できるように作成したいと思います。

今、私はループなどで解決するのではなく、これを正規表現で表現するための良い方法を探しています。

4

2 に答える 2

5

この正規表現を使用して、一致しないことを確認してください。

/000000|000001|000010|000100|001000|010000|100000/
于 2012-09-18T18:07:15.240 に答える
2

トリックを実行する必要がある正規表現は次のとおりです(有効な文字列と一致します)。

^((?!0{6}|10{5}|010{4}|001000|000100|0{4}10|0{5}1)[01])+$

例:http ://www.rubular.com/r/VelZ1Iqml6

これは、文字列内のすべての場所で条件がチェックされるように、繰り返しの中で負の先読みを使用します。

一致しない文字列をチェックできる場合、それはより簡単であり、davidracのソリューションまたはこのわずかに短縮されたバージョン(正規表現の先読みで使用)を使用できます。

0{6}|10{5}|010{4}|001000|000100|0{4}10|0{5}1
于 2012-09-18T18:13:39.327 に答える