-3

.文字列入力で複数のピリオド ( ) を許可する必要はありません。Ruby正規表現を使用してそれを行う最良の方法は何ですか?

コメントへの回答:

メール登録時にメールアドレスの入力をピリオド1つに制限したい。メール入力用の基本的なメール正規表現があります。私の疑問は、( .) の数を Regex 自体で制限できるかどうか、または Ruby ライブラリを使用する必要があるかどうかです。

はい、初心者の質問です。

正規表現はそのまま

/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i

どの部分でもピリオドを 1 つだけ許可するにはどうすればよいですか?

4

1 に答える 1

2

@ の前の部分に最大で 1 つのピリオドを意味すると仮定すると、理論的には、次の正規表現でこれを行うことができます (最初または最後の文字としてドットを許可せず、他の検証を行いません)。

^[^.]+(\.[^.]+)?$

上記の正規表現は @ の前の部分のみを処理します。残りの正規表現は自分で追加する必要があります。基本的には、1 つ以上の非ピリオド文字のグループに一致し、その後にオプションのピリオドのグループが続き、その後に 1 つ以上の非ピリオド文字が続きます。

ただし、電子メール アドレスに最大で 1 つのピリオドを持つユーザーに登録を制限したい理由が知りたいです... ユーザーが合法的に 1 つ以上のピリオドを持つことは非常に現実的であるため、これは賢明な制限とは思えません。ピリオド。

于 2012-04-17T00:01:20.083 に答える