0

私は以下のフォームを持っており、複数の言語で検証したいと考えています。複数言語のフォーム検証(特殊文字)を処理する方法: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> 

私のフォームを検証する現在のパターン[ng-pattern="/^[a-zA-Z0-9-_ ]+$/"]。 英語、日本語、中国語、フランス語、ドイツ語の場合は正常に動作していますが、エラーメッセージが表示されます。

たとえば、Referenceはフランス語に翻訳されるとRéférenceになりますが、それは明らかに特殊文字が含まれていますが、有効です。

どのようにこれらの問題を解決するには?

ご迷惑をおかけして申し訳ございません!

おかげ

答えて

0

は、代わりにすべて正しい値を指定すると、すべての間違った値を指定することができます。

すべての間違った文字を含む正規表現を作成します。例えば、/[@!#$%^&*()\-+={}\[\]|\\/'";:.,~№?<>]+/i

この正規表現は、すべての間違った文字を検索します。

ng-patternは、正の正規表現を期待しているので、実行ng-patternを上書きする必要があります。

ライブサンプル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.多分私は間違った記号を忘れた。必要に応じて、正規表現を単純に展開することができます。

関連する問題