2015-10-07 70 views
0

我正在驗證一些輸入字段。下面是一個簡單例子的正則表達式:正則表達式固定數量的字符,但任意數量的空間

^\[0-9]\{6,6}\$ 

在這個例子中,它需要輸入6個數字。但是,我想稍微放寬驗證,並在必要時留出空間,稍後再刪除它們 - 例如銀行排序代碼。

在英國,一種代碼可以被寫爲123456,或者12 34 56

我知道可以修改的表達以包括空間括號內和在大括號放鬆號碼,但我想要做的是繼續限制數字,以便必須始終輸入6,並且不允許有任何空間 - 當然這些空間可能在任何地方。

我不知道如何處理這個 - 任何想法,幫助讚賞。

+0

什麼語言/工具? –

+0

我正在使用Asp.Net –

回答

3

試試這個:

^(\d\s*){6}$ 

它允許每個數字後0或多個空格字符。

如果你想限制的空白是位內(不帶前導或尾隨空格):

^(\d\s*){5}\d$ 
+0

僅供參考此正則表達式與有效數字'123456'不匹配 – MaxZoom

+0

@MaxZoom OP沒有明確指出允許空格的位置(之前,之後,內部......)。我解釋了這兩個版本中的每一個的作用,並且如果需要支持領先空間,那麼採用它很簡單。 – Amit

+0

似乎應該允許任何空間位置的6位數字。 – MaxZoom

4

如果你讓空間在任何位置靠6位數字,那麼你需要

^(\s*[0-9]){6}\s*$ 

參見regex demo

\s*匹配任何空白,0以上REPE titions。

請注意,限制量詞{6,6}(最小6和最大6個重複)等於{6}

另外,請注意,如果您將正則表達式模式作爲常規字符串文字傳遞,則需要使用\s作爲\\s

如果你打算只允許常規空格,不是所有的空格,只需要使用

^([ ]*[0-9]){6}[ ]*$ 
1

我想你想看看在先行表達

This site解釋他們詳細

對於你的例子,^(?=(\s*[0-9]\s*){6})(\d*\s*)$

這尋找任何數量的空間,其次是一個數字後面任何數量的空間6次。

其他回答我到目前爲止看到的只允許總共6個字符,這個表達式將允許任意數量的空格,但只有6個數字,不能多,不能少。

注:^(\s*[0-9]\s*){6}$這也將工作,沒有超前表達

JavaScript Example

相關問題