首页 > 解决方案 > 如何在正则表达式角度做“和”条件

问题描述

请帮助我使用正则表达式模式。在填写描述字段的表格时,1)如果输入“双引号”,则显示错误消息 2)在填写描述字段值时,如果字符小于 10,则显示错误消息

 <div class="input-container">
        <textarea
          id="desc"
          name="desc"
          #desc="ngModel"
          [(ngModel)]="program.desc"
          aria-required="true"
          pattern="(?=\s*(\S\s*){10,})(?=^[^'\&quot;]*$)"
          required
        ></textarea>
      </div>

 <div *ngIf="desc.invalid && (desc.dirty || desc.touched)">
        <div *ngIf="desc.errors?.pattern">
          {{ msgDescMinLength }}
        </div>
        <div *ngIf="desc.errors?.required">
          {{ desc}}
        </div>
      </div>

标签: angularregex

解决方案


一般要点是将您的“无双引号”要求结合到与您正在寻找的十个字符匹配的标准中。

^[^\"]{10,}$

这只会匹配至少有十个字符的输入,没有双引号。

但看起来你也在尝试以一种特殊的方式处理空间。根据您当前的正则表达式,我猜您打算“修剪”输入,但在修剪后的文本中允许空格。换句话说," My shop "因为“我的商店”的字符少于十个而失败,但" Bob's shop "成功了吗?

这变得更加棘手,因为您必须忽略直到第一个非空白字符的空白,然后允许最多 8 个字符,除了双引号之外的任何字符,然后需要另一个非空白字符,然后再次忽略空白。我认为这样的事情应该有效。

^\s*[^\s\"][^\"]{8,}[^\s\"]\s*$

推荐阅读