1

正規表現を使用して、Ruby クラスのテキスト フィールドからコンマ区切りの単語の文字列を検証しようとしています。以下が有効である必要があります。

word

word, word, word

word,word,word

また、以下は無効である必要があります。

word word word

私はこれがうまくいくと思った

/([a-z]+){1}(,\s*[a-z]+)*/i

Rubular では有効に見えますが、次のようにクラスで検証すると、無効な文字列であるべきものを受け入れます。

@tag_regex = /([a-z]+){1}(,\s*[a-z]+)*/i

validates :tags, 
:allow_blank => true,
:format => { :with => @tag_regex, :message => "Invalid tag format." }

私の問題が正規表現にあるのか、それとも検証方法自体にあるのかはわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

4

^(文字列の開始) と$(文字列の終了)を使用するのを忘れました

だから、そうあるべきです

/^([a-z]+)(,\s*[a-z]+)*$/i

がなければ^$文字列の間のどこにでも一致し^ます..を使用すると、正確$に一致させます

于 2013-04-21T17:59:09.713 に答える