【问题标题】:Validation for name range overlapping.验证名称范围重叠。
【发布时间】:2013-04-15 07:54:41
【问题描述】:

我有这个要求,我束手无策。知道如何让它工作吗?

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

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

【问题讨论】:

  • 显示一些你尝试过的代码?
  • 因此您还希望一次允许多个范围,例如" A-k , n-Q , W-za, Zc-Zw"?

标签: c# javascript regex


【解决方案1】:

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

我会建议匹配模式,在 c# 中是这样的

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    相关资源
    最近更新 更多