2016-04-26 93 views
1

我試圖驗證以下步驟正則表達式表達:如何正確地爲此格式化正則表達式?

例子:

1234567 Marko's word document 31.10.1998 

僞例:

[Seven digit #] [space] [Unspecified amount of text] [space] [. delimited date] 

有人能幫助我在構建一個?這是針對正則表達式的VBA風格。

+0

你有沒有編寫任何代碼是什麼?你卡在哪裏? –

+0

取決於您希望日期驗證的嚴格程度。是'31.09.1998'一個有效的? – Fabricator

回答

3

我會從這裏開始。

^\d{7}\s.*\s\d{1,2}\.\d{1,2}\.\d{4}$ 

這是每個部分對應的內容。

(beginning) =^
[Seven digit #] = \d{7} 
[space] = \s 
[Unspecified amount of text] = .* 
[space] = \s 
[. delimited date] = \d{1,2}\.\d{1,2}\.\d{4} 
(end) = $ 

但是在中間的.*可能允許超過您的確定。 \d{1,2}\.\d{1,2}\.\d{1,4}$也不會實際過濾日期,只是小數。因此,這將允許像「99.99.9999」的字符串

您可以使用此工具來磨練下來,如果你需要更具體的東西: https://regex101.com/r/dU5lQ3/2

+1

不應該是'\ d {1,2} \。\ d {1,2} \。\ d {1,4}'位只是'\ d {2} \。\ d {2} \。 \ d {4}'或者vb不支持? –

+0

我這樣做是因爲我認爲1.1.2010被接受,就像01.01.2010被接受一樣。但是你是對的,這取決於OP。我想盡管刪除\ d {1,4}是安全的。除非他們想要兩位數字年或1000年前的一年。 – Andrew