Je veux utiliser une expression régulière dans AngularJs qui accepte ces trois déclarations:

09344542525 -> 11 length integer that start with 09

02144532363 -> 11 length integer that start with 021

44532363 -> 8 length integer

Voici mon HTML :

<div class="container co-operate" ng-controller="cooperationController">
    <form novalidate name="cooperationForm" class="signinform">
        <div class="form-group inner-addon right-inner-addon">
            <label class="form-label control-label"></label>
            <input ng-model="restaurantInformation.tel" type="text" name="tel" id="tel" placeholder="phone number"
               ng-pattern="mobRegEx || prePhoneRegEx || phoneRegEx" class="form-control default-input singleline-input" required />
            <span class="form-icon icon icon-avatar"></span>
        </div>
        <p ng-show="cooperationForm.tel.$error.pattern" style="color: red">Wrong number format</p>
    </form>
</div>

Angulaire:

app.controller('cooperationController', function ($scope) {
    $scope.mobRegEx = '/09[0-3][0-9]{8}/';
    $scope.prePhoneRegEx = '/021[0-9]{8}/';
    $scope.phoneRegEx = '[0-9]{8}';
    .
    .
    .
}

En fait, lorsque mon entrée est sale et que je teste un entier, le paragraphe d'erreur indique toujours une erreur.

Une suggestion pour modifier l'expression régulière?

2
Farzan Najipour 7 août 2016 à 11:52

3 réponses

Meilleure réponse

Les 3 combinés:

/^(?:0(?:21|9[0-9]))?[0-9]{8}$/

Description

  • ^ correspond au début de la chaîne
  • (?: .. )? est une correspondance de groupe facultative
    • 0(?:21|9[0-9]) littéral 021 OU ...
    • 09 et un autre chiffre
  • [0-9]{8} 8 chiffres supplémentaires
  • $ correspondant également à la fin de la chaîne.

Remarquez que j'ai ajouté des ^ et $ ancres pour éviter de faire correspondre un sous-chaîne

3
Mariano 7 août 2016 à 09:08

Vous essayez d'utiliser plusieurs expressions régulières dans ng-pattern en les séparant à l'aide de canaux - ce n'est pas valide. Comme suggéré dans la réponse ici, vous devez implémenter une directive personnalisée (ng-phone-number?) ou combiner vos expressions multiples en un seul modèle.

L'utilisation d'une directive sera probablement l'approche la plus maintenable.

0
Community 23 mai 2017 à 12:33

var regExp = / (+ 09 | 021 | 44532363) \ d {1,12} / g; var result = string.match (regExp); console.log (résultat)

0
Meena 7 août 2016 à 09:17