2017-11-29 10 views
1

私はフォーム検証のために私の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を返します。これは私が望むものではありません。

質問

なぜ私の検証はそれがないために、私は指定されたとき、アルファの文字が入力できるようにすることですか?

+3

'\をしたいと思いますを参照してください。 – Dez

+0

Ahhhh。簡単な間違い。ありがとうございました。答えとして残して、私は喜んで受け入れるよ –

+0

@KristapsそれはDezが強調した間違いだった。とにかくお時間をいただきありがとうございます –

答えて

3

\wは、RegExpで単語(英数字とアンダースコアの組み合わせ)を許可します。

2

オリジナルの正規表現/^[0-9\s\w\+\-\(\)\']*$/には、\wが含まれています。これは、「任意の単語の文字」に変換されますが、これには[a-zA-Z]が含まれます。

予想通り[]、そのセットから任意の文字を除外しますで^と他の回答とともにすなわち

var regex = /^[0-9\s\+\-\(\)\']*$/ 
1

[^a-zA-Z]+$

に正規表現をあなたの正規表現からこれを削除し、それが動作するはずです。 https://regex101.com/#javascript

それとも、あなたは正規表現の中の単語を可能にw` ^[^a-zA-Z]+$

+1

https://regex101.com/#javascriptの頭はありません。アドバイスとツールをありがとう –

関連する問題