2017-10-09 16 views
1

このRegExを使用して、入力されたパスワードを検証しています。私はtype="password"入力でng-patternと一緒に正規表現を使用していAngularJS - 無効な正規表現

/(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[^a-zA-Z\d])/ 

:パスワードは、少なくとも1つの資本のアルファベット、1点の数と1つのシンボルを持っている必要があります。入力した場合は正常に動作します[email protected]またはMike123*Mike123***を入力するときしかし、それは次のようなエラーがスローされます。

SyntaxError: Invalid regular expression: /^Mik123***$/: Nothing to repeat 

正規表現は、ここで正常に動作します:https://regex101.com/r/j0O4aw/1。使用されているコード:

<div class="input_fieldholder"> 
    <input type="password" 
    class="m-b-0 login_typefield" 
    placeholder="Password" 
    name="password" 
    ng-class="{ form_error: vm.formObject.password.$dirty && vm.formObject.password.$invalid }" 
    ng-model="vm.password" 
    ng-minlength="6" 
    ng-change="vm.onChangePassword()" 
    ng-pattern="/(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[^a-zA-Z\d])/" 
    required 
    ng-attr-autofocus="{{ vm.autoFocus }}"> 

    <div class="text-left m-t-3"> 
    <div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.required" class="text-danger">{{ 'PASSWORD_REQUIRED_VALIDATION' | translate }}</div> 
    <div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.minlength" class="text-danger">{{ 'PASSWORD_LENGTH_VALIDATION' | translate }}</div> 
    <div ng-show="vm.formObject.password.$dirty && vm.formObject.password.$error.pattern" class="text-danger">{{ 'PASSWORD_PATTERN_VALIDATION' | translate }}</div> 
    </div> 
</div> 

<div class="input_fieldholder"> 
    <input type="password" 
    class="m-t-10 m-b-0 login_typefield" 
    placeholder="Confirm Password" 
    name="confirmPassword" 
    ng-class="{ form_error: vm.formObject.confirmPassword.$dirty && vm.formObject.confirmPassword.$invalid }" 
    ng-model="vm.confirmPassword" 
    ng-pattern="vm.password" 
    ng-change="vm.onChangePassword()" 
    required 
    compare-field-selector="[name='password']"> 
    <div class="text-left m-t-3"> 
    <span ng-show="vm.formObject.confirmPassword.$dirty && vm.formObject.confirmPassword.$invalid" class="text-danger">{{'PASSWORD_CONFIRM_VALIDATION' | translate }}</span> 
    </div> 
</div> 

この問題を解決するにはどうすればよいですか?

+2

Gaé[email protected] –

+1

は右です!あなたが実際に入力したパスワードが実際に一致する正規表現として扱われていることを示しています...私は角度を知らない... ng-patternはフレームワークから来ていますか、onChangePassword()でそれを使用していますか?後では、問題を特定できるようにコードを表示する必要があります。 – Salketer

+0

'ng-pattern =" vm.password "'これはconfirmPassword入力フィールドの問題でした。それは必要ではなく、取り除くことができました。助けてくれてありがとう。 – abhim

答えて

0

例より。

id=regex」には一致する正規表現が含まれています。 "id=input"には、正規表現と照合する文字列が含まれています。

<script> 
    angular.module('ngPatternExample', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.regex = '\\d+'; 
    }]); 
</script> 

が続く:。あなたは確かに検索したパターンと文字列を反転さ

<div ng-controller="ExampleController"> 
<form name="form"> 
    <label for="regex">Set a pattern (regex string): </label> 
    <input type="text" ng-model="regex" id="regex" /> 
    <br> 
    <label for="input">This input is restricted by the current pattern: 
    </label> 
    <input type="text" ng-model="model" id="input" name="input" ng-pattern="regex" /><br> 
    <hr> 
    input valid? = <code>{{form.input.$valid}}</code><br> 
    model = <code>{{model}}</code> 
</form> 
</div> 
関連する問題