gpt4 book ai didi

javascript - 是否可以在 AngularJS 中使用双正则表达式(regex)来计算字符串?

转载 作者:行者123 更新时间:2023-11-28 04:44:14 24 4
gpt4 key购买 nike

我正在尝试根据个人 ID 文本字段中的两个同时模式来评估字符串(图 1):

Fig. 1

此字段旨在让用户输入他的个人西类牙语 (DNI) 或葡萄牙语 (Cartão de cidadão) 国家身份证号码,其想法是同时评估这两种模式,而不关心区域设置(该网站是西类牙语、英语和葡萄牙语)。

这些模式应该是:

  1. 西类牙语:/^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i(即 12345678A)
  2. 葡萄牙语:/^[0-9]{7,8}\[0-9]\([A-Z]|[0-9]){2}[0-9]$/(即04521225)

这样,表单的代码片段如下:

<input type="text" name="field_dni"
class="form-control form-control-400" id="field_dni"
ng-model="vm.form.dni"
ng-minlength=9
ng-maxlength=9
ng-pattern= "vm.verificarId" />
<div ng-show="verificarForm.field_dni.$invalid">
<p class="help-block"
ng-show="verificarForm.field_dni.$error.pattern"
translate="verificar.validation.pattern">The pattern entered is
incorrect
</p>
<p class="help-block"
ng-show="verificarForm.field_dni.$error.required"
translate="verificar.validation.required">This field is required.
/p>
<p class="help-block"
ng-show="verificarForm.field_dni.$error.minlength"
translate="verificar.validation.minlength">This field is required to
be exactly 9 characters long
</p>
<p class="help-block"
ng-show="verificarForm.field_dni.$error.maxlength"
translate="verificar.validation.maxlength">This field is required to
be exactly 9 characters long
</p>

如您所见,应该对每个验证(长度和模式)进行评估。

相关的 Controller 片段如下所示:

function ValidateController($scope, Principal, ValidateService,  $state) {
var vm = this;
vm.verificarId= /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i|/^[0-9]{7,8}\[0-9]\([A-Z]|[0-9]){2}[0-9]$/;

这不起作用。该模式似乎被忽略了。我尝试在两个正则表达式条件之间添加括号,例如:

/(^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i)|(/^[0-9]{7,8}\[0-9]\([A-Z]|[0-9]){2}[0-9]$)/

但是抛出语法错误。 我成功实现部分工作的唯一方法是将一个 regExp 或另一个 regExp 硬编码到 ng-pattern 组件中。但这并不是最佳选择,因为两者需要一起工作。

是否有更好且“Angularier”的方法来做到这一点?我尝试在 regex101 中再次重建正则表达式,但没有成功。

最佳答案

我认为问题是您在 View 中使用 vm 。假设您在该 View 中使用该 Controller ,则 Controller 作用域是 View 的作用域,除非您使用别名

所以你应该使用ng-pattern=“verificarId”

ng-pattern=“vm.verificarId”状态

关于javascript - 是否可以在 AngularJS 中使用双正则表达式(regex)来计算字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43521210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com