2017-04-26 2 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!"

정보 @, 관리자 @, 도움말 @는 이메일 @ 판매는 어떻게이 NG 패턴을 가질 수

[email protected]하는

허용되지 않습니다 같은 입력에?

감사합니다.

답변

1

입력에 대해 하나의 패턴 만 유효성을 검사 할 수 있습니다. 그리고 지시어를 사용하여 어떻게 든 할 수 있다고하더라도, 너무 더러운 해결책 일 것입니다. 대신 ng-change 함수 내에서 정규식에 대한 입력의 유효성을 검사하고 formName.inputName.$setValidity을 사용하여 입력의 사용자 지정 유효성을 설정하는 것이 좋습니다. 하나의 패턴이 전달되면 폴백을 사용할 수 있습니다.

따라서, 예를 들어, 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 
    ... 

} 

을 이런 식으로 뭔가를 할 수있다.