名称范围重叠的验证

本文关键字:验证 重叠 范围 | 更新日期: 2023-09-27 18:09:06

我有这个需求,我也束手无策。知道怎么让它工作吗?

字段接受单个值或范围作为过滤器的一部分。范围示例:"A-D",所有名称以A、B、C或D开头的客户名称;"SA- sp",所有名字都以SA, SB,…SP;"MILG",所有名称以MILG开头的客户名称;

在添加帐户名时,范围不应重叠。示例:A-Q, p - z无效,因为p - q范围重叠

名称范围重叠的验证

不使用纯正则表达式。正则表达式不能检查匹配的字符是否比之前匹配的字符"小"。

我建议匹配模式,在c#中像这样

^'p{L}+(-'p{L}+)?(?:,'s*'p{L}+(-'p{L}+)?)?$:

Javascript中将'p{L}替换为[A-Za-z]

然后用","分开,检查是否

  1. 所有找到的范围模式都是有效的范围==>第一个范围的结束在开始之后(即开始字符比结束字符"小")。

  2. 范围不重叠==>第一个范围的开始在其他范围之外,如果第一个范围的结束也不在另一个范围内。