2

すべての数字を含む文字列があります。

次のことを確認したい:

  1. すべての数字は、、およびの範囲に0-4あります
  2. 文字列の最小の長さは5

だから、私はこの正規表現を使用しました:

(?=^\d{5,}$)(^[0-4]*$) //works

予想通り、これは仕事をします

しかし、ポジティブルックビハインドで使用した場合の上記の正規表現は機能しません

(?<=^\d{5,}$)(^[0-4]*$) //doesn't work

なぜ機能positive look behindしないのにlook ahead、この場合は機能するのか

編集

はい、使用できます

^[0-4]{5,}$

look-behindしかし、問題は、上記の場合になぜ機能しなかったのかということです

これは、機能したが機能しなかったこの質問に関連していましlookaheadlookbehind

4

2 に答える 2

1

問題は、入力の最後にルックビハインドを固定していないことです。
これを試して:

(?<=^\d{5,})(^[^5-9]*)$ // $ at end (and removed now-redundant $ from each look behind)

また、ネガティブネガは読みにくいです。[0-4]の代わりに使用して[^5-9]ください。

最後に、これを使用してみませんか:

^[0-4]{5,}$
于 2012-10-19T16:28:22.593 に答える
1

「後ろを振り返るアサーション」に合わせて、後ろから見ていませんか?

すなわち

(^[0-4]*$)(?<=^\d{5,}$)

現在のところ、これが必要です。

  • 次の5文字以上(文字列全体を構成する)
  • 文字列の先頭
  • 含む[0-4]

これは基本的に次のようになります

  • false
于 2012-10-19T16:47:57.943 に答える