验证名称范围重叠。

时间:2013-04-15 07:54:42

标签: c# javascript regex

我有这个要求,而且我的智慧结束了。知道如何让这个工作吗?

该字段接受单个值或范围作为过滤器的一部分。范围示例:“A-D”,所有客户名称的名称均以A,B,C或D开头; “SA-SP”,所有名称均以SA,SB,...,SP开头; “MILG”,所有名称均以Milg开头的客户名称;

添加帐户名称时,范围不应重叠。示例:A-Q,P-Z无效,因为P-Q范围重叠。

1 个答案:

答案 0 :(得分:0)

不是纯正的正则表达式。正则表达式无法检查匹配的字符是否比之前匹配的字符“小”。

我建议匹配模式,用c#这样的

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

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

然后用“,”拆分并检查是否

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

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