You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular FormArray中<speak>标签验证正则需检测空内容/空格

解决Angular FormArray中标签正则验证的问题

原正则/^<speak>.*<\/speak>$/的问题在于.*会匹配零个或任意字符,导致标签内空内容、全空格的情况也能通过校验。

修改后的正则表达式

/^<speak>(?!\s*$).*<\/speak>$/

关键修改点

  • 添加(?!\s*$)负向零宽断言:它会检查<speak>和</speak>之间的内容,若只是空白字符(空格、换行、制表符等)或空内容,直接判定不匹配
  • 保留.*以匹配标签内的任意合法内容,同时通过预查排除无效场景

Angular验证器中的使用示例

import { Validators, FormArray, FormControl } from '@angular/forms';

// 定义验证器
const speakTagValidator = Validators.pattern(/^<speak>(?!\s*$).*<\/speak>$/);

// 在FormArray中应用
const myFormArray = new FormArray([
  new FormControl('<speak>有效内容</speak>', [speakTagValidator]),
  new FormControl('<speak>  </speak>', [speakTagValidator]) // 会触发验证错误
]);

额外说明

如果需要限制标签内的内容类型(比如仅允许文本,不允许嵌套标签),可以进一步调整正则,但上述修改已能解决你提出的「空内容/仅含空格」的检测问题。

内容的提问来源于stack exchange,提问作者Prasath V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:17:26