2016-04-26 58 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