2

さて、ここに行きます:目標は、「BLABLABLABBLAB」のような文字列に一致する正規表現を作成することです。

^[A-Z](\s?[A-Z])*$

ただし、主な問題は、一致する文字列の長さが1から無限大までの範囲になる可能性があることです。それで、上記のものとまったく同じように動作するが、文字列の長さが20文字以下の場合にのみ一致する正規表現を作成することは可能ですか?(文字列の最初または最後、あるいはその両方にスペースを入れることはできません。)

この場合、正規表現の外で文字列の長さを変更する方が良いことを理解しています(たとえば、私のアプリのコードでは、すでにこれを行っています)が、単純なものが欠けているかどうかだけ知りたいですか?

編集:20文字は文字列の全長であり、単語間のオプションの単一スペースを含みます。単語の長さは1文字以上にすることができます。したがって、「AAAAABBBBBDDDDDEEEEE」(大文字の20文字)は一致する必要があり、「AAAAABBBBB CCCCDDDDD」は一致する必要があります(間に1スペース)、「AAAA BBBB CCCC DDDDD」は一致する必要があります(間に3つのシングルスペース、文字列の長さは20)。 AA B "は一致する必要があります(中間の単一スペース、全長<20)、" AAAAABBBBBBCCCCCDDDDDDF "は一致しない必要があります(文字列の長さが21であるため)など。

4

2 に答える 2

4

これを試して

^(?=.{1,20}$)[A-Z](\s?[A-Z])*$
于 2012-09-05T12:28:01.663 に答える
1

これを使って:

^(?=.{1,20}$)([A-Z]+\s?)+[A-Z]$
于 2012-09-05T12:07:26.120 に答える