1

入力内に文字クラスが少なくとも n 個あり、m 個以下であることを主張する正規表現の先読みは何ですか。

簡単で具体的な例を作るために、入力のどこかに5 ~ 8 桁の数字があり、入力が単語の文字とスペース (つまり) で構成されていると主張したいとします[ \w]*。それで:

this line 123 does not match
this line 123 foo 456 matches
this line 123 % 456 does not match
this line 123 foo 456 bar 789 does not match

{5,8}私は先を見据えてさまざまな組み合わせを試しました:

^(?=(.*\d){5,8})[ \w]*$

しかし、上記の 4 行目の一致 (たとえばregexpal ) として、 の上限8は適用されません。

4

2 に答える 2

4

^文字列の先頭から、文字列の最後まで、0 個以上の非数字、次に数字{5 to 8 times}、非数字のみに一致します$

^([^\d]*\d){5,8}[^\d]*$
于 2013-01-11T14:08:40.257 に答える
0

私はついに方法を見つけました。2 つの先読みを使用する必要があります。1つは下限用、もう 1 つは上限用です。

^(?=(.*\d){5,8})(?!(.*\d){9,})[\w ]+$
于 2013-01-11T19:55:14.553 に答える