考虑我有以下表格,我想验证多种语言。
<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 :(得分: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);
}
};
});
&#13;
<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>
&#13;
P.S。也许我忘记了一些错误的符号。如果需要,您可以简单地展开正则表达式。