2010-11-08 111 views
0

假設我們有一些定義長度的字符串,它可能包含一些分隔符,它們僅用於用戶友好的視圖。某些長度的正則表達式忽略指定字符

實施例:9位串, 「123456789」,能夠被呈現像 「123456789」 或 「123.456.789」 或 「1-234-5-67-89」 或 「123 456 789」

我需要的是一個正則表達式,它可以計算忽略分隔符的長度。 喜歡的東西[\d|,\.\-\s]{9},但與只\ d計數於{9}(允許...任選,分隔符不應連續超過2的任意數量的分隔符)

+0

您沒有使用「分隔符」,而是「分隔符」?或者你呢? ** QUOTE **:*分隔符*:用於將界限設置爲任意大小的文本對象的「字符」或「字符串」,不要與「分隔符」或「終止符」混淆。 「劃界」的確意味着「包圍」或「包圍」(就像這些括號一樣)。 – tchrist 2010-11-08 16:26:41

+0

當然,「分隔符」。對不起,我的英語:) – manuna 2010-11-08 16:48:06

回答

4
^[-.,\s]*(?:\d[-.,\s]*){9}$ 

任選,分隔符不該「T連續超過二:

^[-.,\s]{0,2}(?:\d[-.,\s]{0,2}){9}$ 
+0

正確的,發佈後的問題我已經到了類似的部分,就像:(\ d [\ - ] {0,1}){11,13}(在我的情況下^和$是不需要,因爲搜索需要經過一段文字) 不過,我想知道什麼「(?:)」用法增加了這個表達式?如果我們不需要反向引用,它通常更喜歡「()」嗎? – manuna 2010-11-08 16:45:15

+0

@manuna:對。 – kennytm 2010-11-08 17:12:45

0

而不是困擾我的頭要找到一個合適的正則表達式可以做到這一點,我寧願使用更簡單的正則表達式之一:

  • 查找所有數字並檢查匹配數量,或者
  • 刪除所有非數字並檢查剩餘的長度。