0

betrachte ich habe unten Formular, das ich für mehrere Sprachen validieren möchte.Wie behandelt man Formularvalidierung (Sonderzeichen) für mehrere Sprachen: AngularJS?

<form ng-submit="vm.transferCommunity()" name="transferCommunityForm"> 
<input type="text" class="form-control" name="transferCommunityLogin" ng-model="vm.transferCommunity.login" ng-pattern="/^[a-zA-Z0-9-_ ]+$/" > 
<button type="submit" class="btn btn-default" ng-disabled="(transferCommunityForm.transferCommunityLogin.$invalid && !transferCommunityForm.transferCommunityLogin.$pristine)">Button</button> 

<div ng-messages="transferCommunityForm.transferCommunityLogin.$error" ng-if="transferCommunityForm.transferCommunityLogin.$invalid"> 
    <div class="alert alert-danger" ng-message="pattern">Special Characters are not allowed</div> 
</div> 
</form> 

Das aktuelle Muster [ng-pattern="/^[a-zA-Z0-9-_ ]+$/"], durch die ich meine Form bin zu validieren. Es funktioniert gut für die englische Sprache, aber für die Sprachen wie Japanisch, Chinesisch, Französisch, Deutsch, zeigt es eine Fehlermeldung.

zum Beispiel Wort Reference in Englisch, wenn übersetzt in Französisch wird Référence und es enthält eindeutig Sonderzeichen, aber es ist gültig.

Wie löst man dieses Problem?

Jede Hilfe wird geschätzt !!!

Dank

Antwort

0

Statt alle richtigen Werte angeben, können Sie die falschen Werte angeben.

Erstellen Sie einen regulären Ausdruck, der alle falschen Zeichen enthält.

Zum Beispiel: /[@!#$%^&*()\-+={}\[\]|\\/'";:.,~№?<>]+/i.

Dieser reguläre Ausdruck sucht nach allen falschen Zeichen.

Da ng-pattern erwartet, dass wir einen positiven regulären Ausdruck geben, müssen wir die Ausführung ng-pattern überschreiben.

Live Beispiel auf jsfiddle.

angular.module('ExampleApp', []) 
 
    .controller('ExampleController', function($scope) { 
 
    $scope.myPt = { 
 
     regExp: /[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i, 
 
     test: function(val) { 
 
     console.log(val); 
 
     return !this.regExp.test(val); 
 
     } 
 
    }; 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<div ng-app="ExampleApp"> 
 
    <div ng-controller="ExampleController"> 
 
    <form name="myForm"> 
 
     <input ng-model="firstName" name="firstName" ng-pattern="myPt" required> 
 
     <br>firstName = <pre>{{myForm.firstName.$error|json}}</pre> 
 
    </form> 
 
    </div> 
 
</div>

P. S. Vielleicht habe ich ein paar falsche Symbole vergessen. Bei Bedarf können Sie einfach den regulären Ausdruck erweitern.