2015-12-04 78 views
0

我想通過在xsd中給予限制來驗證xml模式。該模式有 555-333-4834,444-233-3333其中可能包含一個或多個電話號碼。正則表達式的數字列表

這是我的解決方案:

<xs:element name="PhoneNumber" minOccurs="1" maxOccurs="unbounded"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:maxLength value="14"></xs:maxLength> 
       <xs:minLength value="10"></xs:minLength> 
       <xs:pattern value="^[0-9]{3}(-[0-9]{3})(-[0-9]{4})?"></xs:pattern> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 

目的是檢查前3個是數字。我試圖用這個來測試。它適用於1號碼,但不適用於數字列表。

+0

您可以使用此網頁https://regex101.com/檢查正則表達式。你也必須知道括號是用來創建組的,也許這個工作很糟糕。你也可以嘗試逃避' - ',因爲你可能有問題,因爲它也用於字母或數字的範圍。 – JuanDYB

+0

我沒有得到數字**部分的**清單。這是否意味着它應該接受555-333-4834,444-233-3333?但最大允許長度似乎只有14。 –

+0

如果有任何電話號碼是非美國號碼,那麼這是一個無望的計劃。當然,即使在美國,人們與外國人接觸也越來越普遍? –

回答

1

假設所有的電話號碼必須完全在您發佈的格式(NNN-NNN-NNNN),此正則表達式將匹配一個或多個,用逗號分隔(不允許前/後逗號):

^\d{3}-\d{3}-\d{4}(,\d{3}-\d{3}-\d{4})*$ 

如果前導/尾隨逗號將被允許,該模式是:

^,?\d{3}-\d{3}-\d{4}(,\d{3}-\d{3}-\d{4})*,?$ 
+0

謝謝@aaron_world_traveler – Priya

0

這一個做的工作:
^([0-9]{3}-[0-9]{3}-[0-9]{4})(,[0-9]{3}-[0-9]{3}-[0-9]{4})*$

它適用於一個或多個逗號分隔的電話號碼。

0

限制最大長度= 14避免多於一個電話號碼的存在。此外,你必須修改模式@aaron_world_traveler和@Paco Abato在他的答案中建議。

順便說一下,使用您當前的架構,您可以使用多個PhoneNumber標記,每個標記都有一個數字。

+0

謝謝,我將明確地考慮到@jmad – Priya