J'ai le code de validation de courrier électronique suivant qui utilise la directive ng-pattern. Je dois inclure des guillemets simples dans la validation d'erreur afin que, par exemple: asd'[email protected] échoue. Je ne veux pas utiliser la directive angulaire par défaut car les suivants .. (points), ^, virgules, etc.
<input type="email" name="username" placeholder="[email protected]" ng-model="user.username" ng-maxlength="100" ng-model-options="{ updateOn: blur }" ng-pattern='/^(([^<>()\[\]\\.\,;:\s@"]+(\.[^<>()\[\]\\.,;^:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/' required />
<div class="error-container" ng-show="userForm.username.$dirty && userForm.username.$error">
<small class="error" ng-show="userForm.username.$error.required">
Your email is required.
</small>
<small class="error" ng-show="userForm.username.$error.pattern">
Please input a valid email.
</small>
<small class="error" ng-show="userForm.username.$error.maxlength">
Your email cannot be longer than 100 characters
</small>
Il peut être vu de ce qui précède que j'utilise le Regex suivant: ng-pattern='/^(([^<>()\[\]\\.\,;:\s@"]+(\.[^<>()\[\]\\.,;^:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'
Ma question est de savoir comment inclure des guillemets simples (') pour ne pas entrer en conflit avec les guillemets de balises ng-pattern et aussi (^) dans l'expression régulière. J'ai cherché et il semble que je devrais utiliser & apos mais je ne sais pas comment mettre en œuvre. Appréciez toute aide.
Vous pouvez utiliser cette version un peu raccourcie:
ng-pattern="/^(([^<>()\[\]\\.,;:\s@^\x22\x27]+(\.[^<>()\[\]\\.,;^:\s@\x22\x27]+)*)|(\x22[^@]+\x22))@((\[[0-9]{1,3}(\.[0-9]{1,3}){3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/"
Voici la démo regex
Les changements sont:
\.[0-9]{1,3}
sont contractés car il est répété 3 fois pour(\.[0-9]{1,3}){3}
\x27
( '
) et \x22
( "
)^
à la première classe de caractères annulée\x22.+\x22
est tourné vers \x22[^@]+\x22
afin que nous ne débordions pas vers la partie domaine et restions dans la partie nom d'utilisateur.Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots