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
相关产品推荐
相关产品推荐

