2013-04-15 38 views
-1

我有這個要求,我在我的智慧結束。任何想法如何得到這個工作?驗證名稱範圍重疊。

該字段接受單個值或範圍作爲過濾器的一部分。範圍示例:「A-D」,名稱以A,B,C或D開頭的所有客戶名稱; 「SA-SP」,所有以SA,SB,...,SP開頭的名字; 「MILG」,名稱以Milg開頭的所有客戶名稱;

在添加帳戶名稱時,範圍不應重疊。示例:由於P-Q範圍重疊,因此A-Q,P-Z無效。

+2

顯示您嘗試過的一些代碼? – LukeHennerley

+0

因此,您還希望一次允許多個範圍,例如'「A-k,n-Q,W-za,Zc-Zw」'? –

回答

0

不是純正則表達式。正則表達式不能檢查匹配的字符是否比之前匹配的字符「小」。

我建議要匹配的模式,在C#這樣的事情

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

在Javascript中通過[A-Za-z]

然後通過拆分取代\p{L} 「」 並檢查是否

  1. 所有找到的範圍模式都是有效的範圍==>第一個範圍的末尾在開始後即將到來(即,起始字符比最終字符「小」)。

  2. 範圍不重疊==>第一個範圍的開始在其他範圍外,並且第一個範圍的結束也不在另一個範圍內。