简体   繁体   English

AngularJS-无效的正则表达式

[英]AngularJS - Invalid Regular Expression

I'm using this RegEx to validate the password entered. 我正在使用此RegEx验证输入的密码。 The password needs to have at least 1 capital alphabet, 1 number and 1 symbol: 密码必须至少包含1个大写字母,1个数字和1个符号:

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

I'm using the RegEx along with ng-pattern in an type="password" input. 我在type="password"输入中使用RegEx和ng-pattern It works fine when entered Mike123@ or Mike123* . 输入Mike123@Mike123* But it throws the following error when entering Mike123*** : 但是在输入Mike123***时会引发以下错误:

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

The RegEx works fine here: https://regex101.com/r/j0O4aw/1 . RegEx在这里工作正常: https : //regex101.com/r/j0O4aw/1 Code where it's being used: 使用代码:

<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>

How should I resolve this? 我该如何解决?

From the example. 从示例。

The “ id=regex ” contains the regex to match. id=regex ”包含要匹配的正则表达式。 The “ id=input ” contains the string to check against the regex. id=input ”包含用于检查正则表达式的字符串。

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

followed by : 其次是 :

<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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM