2017-01-20 6 views
0

"OR"条件を使用して電子メールと携帯電話番号の正規表現変数regex1とregex2を1つのngパターンに渡そうとしていますが、動作しません。私は一度に1つの変数を渡す場合、それは完全に動作します。ですから、一度に2つの変数を1つのng-patternディレクティブに渡すにはどうすればよいですか。あなたは何ができるか..2つの正規表現変数を1つのng-patternディレクティブに使用する方法は?

<!DOCTYPE html> 
<html lang="en" ng-app="myApp"> 
<head> 
    <meta charset="utf-8"> 
    <title>Form Validate</title> 
    <style> 
     input.ng-invalid.ng-dirty{border:1px solid red;} 
    </style> 
</head> 
<body> 
<div ng-controller="myCtrl"> 
    <form name="frm"> 
    <input type="text" name="udetail" ng-model="user.udetail" placeholder="Enter email or phone number" ng-pattern="regex1 || regex2" required> 
    <span ng-show="frm.udetail.$dirty && frm.udetail.$error.required">required</span><br> 

    </form> 
</div> 
    <script src="https://code.angularjs.org/1.2.3/angular.min.js"></script> 
    <script> 
    var app = angular.module("myApp", []); 
app.controller("myCtrl", function($scope) { 
    $scope.regex1 = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    $scope.regex2 = /^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$/; 
}); 
    </script> 
</body> 
</html> 
+0

ちょっと!みんなはそのためのいくつかの解決策を提供します... –

+0

電子メールと電話番号のための共通の正規表現を持つことは可能ですか?はいの場合は、その特定の正規表現を提供してください。 –

答えて

1

をソリューションを提案してくださいすると、両方の正規表現を取り、これらの正規表現に基づいて可能な関数を作成 ある

<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> 
     <meta charset="utf-8"> 
     <title>Form Validate</title> 
     <style> 
      input.ng-invalid.ng-dirty{border:1px solid red;} 
     </style> </head> <body> <div ng-controller="myCtrl"> <form name="frm"> 
     <input type="text" name="udetail" ng-model="user.udetail" placeholder="Enter email or phone number" ng-pattern="regex1 || regex2" required> 
     <span ng-show="frm.udetail.$dirty && frm.udetail.$error.required">required</span><br> 

     </form> </div> <script src="https://code.angularjs.org/1.2.3/angular.min.js"></script> <script> 
     var app = angular.module("myApp", []); app.controller("myCtrl", function($scope) { 
     $scope.regex1 = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
     $scope.regex2 = /^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$/; }); 
     $scope.runBothRegex = (function(){ 

     return { 
     var value = $scope.user.udetail; 
     if(regex1.test(value) || regex2.test(value)){ 
      return true; 
      } 
     return false; 
     } 
    })(); 
    </script> </body> </html> 
機能trueとfalseとngのパターンからのコールを返します
関連する問題