私はフォーム検証のために私のAngularアプリにカスタムdirective
を持っています。私はそのために私は `正規表現 'を作成している、数値を受け入れなければならない携帯電話を持っているinput
:私はそのようにように関数内で条件内で使用している検証機能でアルファベットを使用しないでください
var regExp = /^[0-9\s\w\+\-\(\)\']*$/;
:
.directive('validatePhone', function(){
var regExp = /^[0-9\s\w\+\-\(\)\']*$/;
return {
require: 'ngModel',
link: function(scope, elem, attr, ctrl) {
function myValidation(value) {
if (regExp.test(value)) {
ctrl.$setValidity('validPhone', true);
} else {
ctrl.$setValidity('validPhone', false);
}
return value;
}
ctrl.$parsers.push(myValidation);
}
}
})
$%!
のような特殊文字を入力すると、フロントエンドにエラーが表示されるので、動作します。何らかの理由で、まだアルファ値を受け入れています。私は最初それフラグなどの偽の検証でアルファ値を入力した場合
.directive('validatePhone', function(){
var regExp = /^[0-9\s\w\+\-\(\)\']*$/;
var regExc = /^[a-zA-Z]+$/; //new reg exp
return {
require: 'ngModel',
link: function(scope, elem, attr, ctrl) {
function myValidation(value) {
if ((regExp.test(value)) && (!regExc.test(value))) {
ctrl.$setValidity('validPhone', true);
} else {
ctrl.$setValidity('validPhone', false);
}
return value;
}
ctrl.$parsers.push(myValidation);
}
}
})
:私はその後input
値はそうのように、アルファ値が含まれていない場合にのみ、trueと評価する条件を拡張しました。しかし、数値とアルファ値を入力すると、それは真である0178ar
を返します。これは私が望むものではありません。
質問
なぜ私の検証はそれがないために、私は指定されたとき、アルファの文字が入力できるようにすることですか?
'\をしたいと思いますを参照してください。 – Dez
Ahhhh。簡単な間違い。ありがとうございました。答えとして残して、私は喜んで受け入れるよ –
@KristapsそれはDezが強調した間違いだった。とにかくお時間をいただきありがとうございます –