次の制約を持つ JavaScript 正規表現を作成する必要があります。
- 入力文字列は 6 文字以上にする必要があります
- 入力文字列には少なくとも 1 つのアルファベット文字が含まれている必要があります
- 入力文字列には、アルファベット以外の文字が少なくとも 1 つ含まれている必要があります
JavaScript のルックバック機能が深刻に不足しています。私が思いついたこと:
((([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))....)|
(.(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))...)|
(..(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))..)|
(...(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])).)|
(....(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z])))
これはかなり長く見えます。より良い方法はありますか?
私がこれに来た方法:
- アルファベット文字の正規表現は
[a-zA-Z]
- 非アルファベット文字の正規表現は
[^a-zA-Z]
[a-zA-Z][^a-zA-Z]
だから私は aか[^a-zA-Z][a-zA-Z]
そこらを探す必要があります(([a-zA-Z][^a-zA-Z])|([^a-zA-Z][a-zA-Z]))
。- n 個の先行文字と 6 -n 個の後続文字をチェックする必要があります。