2017-04-26 8 views
0

私の現在の入力がこの角度は、私は、同じ提出

<input type="email" name="email" 
    ng-pattern="emailRegex" 
    ng-change="emailChanged()" 
    required /> 

私のNGパターン=「ctrl.emailRegex」電子メールは

有効であるかどう検証するように見える検証するために2 ngのパターンを持つことができます
/^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/; 

しかし、私は情報@、管理者@、ヘルプ@、電子メール@販売を阻止したいと思いますので、私はこれまでのところ

/^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/ 

にとても良い正規表現を変更しましたが、私はに

無効なメール

を表示したいと思い、 "[email protected]!!!!!.com!"

情報@、管理者@、ヘルプ@は、電子メール@売上高はどのように私は2 ngのパターンを持つことができます

[email protected]する

を許可されていません同じ入力で?

ありがとう

答えて

1

入力のパターンは1つのみ検証できます。そして、たとえディレクティブを使って何らかの形でソートすることができたとしても、それは解決策があまりにも汚いでしょう。 ではなく、ng-changeの関数内で正規表現に対して入力を検証し、入力のカスタム妥当性を設定するにはformName.inputName.$setValidityを使用することをお勧めします。これにより、1つのパターンが渡された場合にフォールバックすることができます。

ので、例えば、ctrl.emailChangedは、おそらくあなたは別の関数に検証ロジックを移動し、ちょうどemailChangedからそれを呼び出すことができ、あるいは、

ctrl.emailChanged = function() { 
    var emailPattern = /^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/; 
    var customValidateEmail = /^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/; 

    if(!emailPattern.test(ctrl.registrationForm.email)) { 
    // Invalid email 
    } else if (customValidateEmail.test(ctrl.registrationForm.email)) { 
    // handle accordingly 
    } 

    // rest of the things 
    ... 

} 

をこのようなものを持つことができます。

関連する問題