2012-04-16 14 views
-3

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

コメントに答える:私は電子メールの登録時のメールアドレスで唯一の期間の入力を制限したい

。私は電子メール入力のための基本的な電子メールの正規表現を持っています。私の疑問は、(.)の数をRegex自体で制限することが可能な場合、またはRubyライブラリを使用する必要があります。

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

正規表現は、その一部の内部の1つの周期のみを許可するようにどのような

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

ようですか?

+1

この宿題はありますか? –

+1

入力の制限?それは正規表現と関係がありますか? – texasbruce

+0

これまでのコードを表示して、試したことを教えてください。これが宿題の問題であれば、そのような質問をタグ付けします。 –

答えて

2

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

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

しかし、あなたの電子メールアドレスに最大1つの期間の登録を制限したいのはなぜですか?これはユーザが合法的に非常に現実的であるため、賢明な制限のようには見えませんその住所に1つ以上の期間がある。

+0

カスタム電子メールシステムでは、マルチドットメールが許可されていません。それは国固有のものです。答えてくれてありがとう。今、Regexだけを使って問題を解決しようとします。私はそれが良い習慣であると思う。 – Yulia