2016-05-24 5 views
1

電子メールの検証に問題があります。私はAngular.jsを使用します。私のフォームで 私が入力を持っている:二重ドットを使用した角度の付いた電子メールの確認

<input class="form-control input-flat-underline" 
           ng-pattern="/^[\w\.-][email protected][\w\.-]+\.[\w]+$/" 
           id="email" name="email" ng-model="ctrl.user.email" required type="email"> 

test..com

@電子メール

テストがOKではなく、検証が合格し、しかし、電子メールがあります正しくありません。私は問題がngパターンであると思う。

+0

は、有効なメールアドレスではありません。 – dfsq

+0

はい、しかし検証には –

+0

が渡されます。タイプが "email"の場合、ng-patternは必要ありません。電子メールの検証が含まれています。 – fhollste

答えて

2

電子メールアドレスを検証したいとします。したがって、この場合正しい正規表現パターンはquite complexになるため、独自の正規表現パターンを作成する必要はありません。あなたはこれをしたくありません。

そして、これは、あなたがこの問題を持っていた理由は、次のとおりです。「テストは@ test..com」passess ngPattern検証が(それはない、これはない有効な電子メールアドレスです、そして、あなたの正規表現すべきであるにもかかわらず、 not standard compliant)、type = "email"検証(角度1)で失敗します。

Angularには、入力type="email"を使用して簡単に使用できる電子メールの正規表現(この1つはhere)が組み込まれています。だから、あなたがする必要があるすべてはngPatternを削除することです正しいメールアドレスの検証を行うために、あなたのケースで:

<input class="form-control input-flat-underline" id="email" name="email" 
     ng-model="ctrl.user.email" 
     required 
     type="email"> 
+0

OKですが、私はこのコードを持っています: –

+0

'' ng-message = "pattern" 'の代わりに' ng-message = "email" 'を使用してください。 – dfsq

0

あなたは、内蔵の電子メールの検証入力タグからNG-patternオプションを削除することで、角度を試すことができます。次のように :

<input type="email" name="input" ng-model="email.text" required> 

そうでなければ、次のように検証を試みることができる: `テストする@ test..com` Becaus

<input type="email" name="input" ng-model="email.text" ng-pattern="/^[^\[email protected]][email protected][^\[email protected]]+\.[^\[email protected]]{2,}$/" required> 
関連する問題