ユーザを検証したいので、ユーザ名でa-zと - のみ使用できます。検証:文字、数字、 -
validates_format_of :username, :with => /[a-z]/
しかし、このルールはまた
Username should use only letters, numbers, spaces, and [email protected] please.
@スペース._に任意のアイデアを可能に?
よろしくお願いいたします。 ロンヴィグモレル
ユーザを検証したいので、ユーザ名でa-zと - のみ使用できます。検証:文字、数字、 -
validates_format_of :username, :with => /[a-z]/
しかし、このルールはまた
Username should use only letters, numbers, spaces, and [email protected] please.
@スペース._に任意のアイデアを可能に?
よろしくお願いいたします。 ロンヴィグモレル
[] [-Z0-9]は小文字と数字
特殊文字を与えるように、いくつかの「ルール」を含んでよい - ルール
んの開始時に行かなければなりません
[[email protected]_.]
効果を与えますか?
あなたは、文字列全体が一致しなければならないと言う必要があるかもしれません:
validates_format_of :username, :with => /^[-a-z]+$/
あなたがで改行と一致しない場合にも、\ Aと^置き換えると\ Zと$する必要があるかもしれません始まりと終わり。 (thanks to BaroqueBobcat)
iを追加すると、大文字と小文字を区別しないで一致させます。 (Omar Qureshiのおかげで)。
(私ももともと+
をオフに左:Chuckのおかげで)
は大文字小文字を区別しないために/^[ - a-z] $/iとして同意します –
例は常に無効を返します:/ – atmorell
irb .. re =/^ [ - a-z] $/i; "foo" =〜re –
は、単に(\w
は、すべての英数字カバー - 文字と数字 - とアンダースコアを)すべての文字をあなた仕様の状態と一致する正規表現を変更。
validates_format_of :username, :with => /[\w \.\[email protected]]+/
あなたの例はかなり近いですが、ユーザーは引き続き使用できます。スペース。私の.......新規ユーザー – atmorell
長い文字列の一致を防ぐために、ここには制限はありません。これは、一致した文字の少なくとも1つを含む文字列と一致します。 –
validates_format_of :username, :with => /^[\w\[email protected]]*$/
注*「0以上の」
同じ問題...スペースと。まだ許可されています:/ – atmorell
より複雑なソリューションが、再利用可能な、よりきめの細かいエラーメッセージとを意味します。
カスタムバリデータ: -
をアプリ/バリ/ username_convention_validator.rb
class UsernameConventionValidator < ActiveModel::EachValidator
def validate_each(record, field, value)
unless value.blank?
record.errors[field] << "is not alphanumeric (letters, numbers, underscores or periods)" unless value =~ /^[[:alnum:]._-]+$/
record.errors[field] << "should start with a letter" unless value[0] =~ /[A-Za-z]/
record.errors[field] << "contains illegal characters" unless value.ascii_only?
end
end
end
( '_' と完全性のために、非ASCII文字を許可するdoesntのそれは認めていません注意してください)
用途:
ユーザ名:validates_format_of:アプリ/モデル/ user.rb
validates :name,
:presence => true,
:uniqueness => true,
:username_convention => true
ニースの答え - それは余分なマイルになります。 –
これは私が思いついたものです=>/^と[ - AZ \ D _] + $/ – atmorell
あなたは答えを持っている場合あなたの問題を解決するなら、あなたはそれを受け入れられたものとしてマークするべきです。 –