0

私はそれを機能させるために私の知恵の終わりにいます。
必要なのは次のとおり
です。1。入力はLOVEで開始しないでください。
2.すべての有効な文字が同じである必要はありません。
3.有効な文字は6文字以上(大文字と数字)、最大18文字である必要があります
。4。その他の使用可能な文字は、スペース、アンパサンド(&)、ハイフン、ピリオド、スラッシュ(/)です。

例:
ERTYUIIは許可されていますafgTYULOは許可さ
れていません(5つの有効な文字のみが含まれています)
LOVE12345WERTは許可されていません(LOVEで始まります)。
asdERTY12 ^&は許可されます(少なくとも6つの有効な文字(ERTY12の大文字と数字))
asAAertArtytyAtytytuArtyttyAyuyuyyAは、6つの有効な文字がありますが、すべて同じです。

ご意見をお聞かせください。

注:割り当てのいくつかのポイントを見逃したため、この質問を編集しました:(。

4

1 に答える 1

3

注: この正規表現は、元の質問で指定された説明と一致しました。その後、編集により要件が大幅に変更されました。

私があなたを正しく理解していれば、この正規表現は機能するはずです:

/^(?!LOVE)[^a-z]+$/

これは、LOVE で始まらず、小文字を含まないものと一致します。

(注: これは、標準的な英語のアルファベット、az のみを想定しています)

説明:

^$文字列の先頭と末尾にアンカーします。これにより、パターンが文字列全体に一致するようになります。

(?!LOVE)先読みです。文字列が LOVE で始まっていないことを確認しますが、一致位置はまったく前に移動しません。したがって、残りの正規表現は引き続き文字列全体に対してチェックします。

[^a-z]小文字以外のものに一致する否定文字クラス。

+前のものに 1 回以上一致します。したがって、小文字ではない 1 つ以上の文字に一致します。

アップデート:

同じ文字が繰り返されるだけのものも禁止したいですか?同じ文字のみを含む文字列に一致する正規表現を次に示します。

/^(.)\1+$/

(.)単一の文字に一致し、最初のキャプチャ グループに入れます。

\1+キャプチャ グループの 1 つ以上の出現に一致します。

この場合、不要な入力と一致するため、正規表現が一致しないことを確認する必要があります。

別の先読みを使用して、同じ正規表現でこれを組み合わせることができます。

 /^(?!LOVE)(?!^(.)\1+$)[^a-z]+$/

ただし、同じ正規表現に条件を追加すると、ますます理解しにくくなります。複数のチェックを行う必要がある場合は、それらを異なる正規表現に分ける方が賢明な場合がよくあります。

于 2013-03-01T11:27:21.293 に答える