2016-07-18 4 views
0

のRails 4.2アプリケーションの私は、私はそれにHTML5の検証を実行できるようにフロントエンドにバックエンドから正規表現を使用しようとしています:HTMLで残念ながらフロントエンドでRailsバックエンドの正規表現を使用するには?私のRubyで

# constants.rb 
EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 

# edit.html.erb 
<%= f.email_field :email, :required => true, :pattern => EMAIL_REGEX %> 

、ソースpattern属性は

pattern="(?i-mx:\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z)" 

と表示されていますが、これは私が望まないものです。

誰でも手伝いできますか?

+0

あなたは何をしたいですか? –

+3

'\ A'、' \ z'、インライン修飾子はHTML5では機能しません。あなたは 'EMAIL_REGEX ="^[\\ w + .-] + @ [A-Za-z \\ d .-] + \\。[A-Za-z] + $ "' –

+0

@SergioTulentsev:機能していないためです。それは間違っている 'email @ bla'のような電子メールを検証します。 – Tintin81

答えて

2

\A,\z、インライン修飾子はHTML5 pattern属性では機能しません。あなたは

EMAIL_REGEX = "[\\w+.-][email protected][A-Za-z\\d.-]+\\.[A-Za-z]+" 

かのようなJavaScriptのパターンを使用する必要があります(これらはデフォルトで固定されているよう^$は、HTML5のパターンで冗長ですが):パターンが文字列として渡されること

EMAIL_REGEX = "^[\\w+.-][email protected][A-Za-z\\d.-]+\\.[A-Za-z]+$" 

注意をインライン修飾子を追加することができず、正規表現メタキャラクタをエスケープするリテラルのバックスラッシュを導入するためにバックスラッシュを2倍にします。

バックエンドについては、独自の正規表現を使用してRoRに合わせることができます。

1

OK、私はここに2つの正規表現を付けると思います。 1つはバックエンドコードに、もう1つはフロントエンドにあります。

関連する問題