javascript - AngularJS - 无效的正则表达式

标签 javascript angularjs regex

我正在使用此正则表达式来验证输入的密码。密码至少需要1个大写字母、1个数字和1个符号:

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

我在 type="password" 输入中使用 RegEx 和 ng-pattern。输入 Mike123@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>

我该如何解决这个问题?

最佳答案

来自示例。

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>

关于javascript - AngularJS - 无效的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46640841/

相关文章:

javascript - 如何在 JavaScript 中移动带方向的 div?

javascript - 子域是否被视为跨域?

javascript - Widget模板的跨域加载

javascript - 函数具有不一致的返回点

javascript - AngularJS - 未知提供商 : AuthProvider

regex - 非常神奇的正则表达式,可以让我替换这些图像?

javascript - 使用带有 unicode 字符的 ng-pattern (Angular.JS) 的不良结果

javascript - 使用 promises 多次运行相同的异步函数

javascript - 在 Angular 加载后加载 Jade 并解析所有变量

C# 枚举正则表达式匹配