2016-04-26 5 views
1

私は、次の手順のための正規表現式を検証しようとしています:正規表現を正しくフォーマットするにはどうすればよいですか?

例:

1234567 Marko's word document 31.10.1998 

擬似例:

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

誰かが1を構築する上で私を助けることはできますか?これは正規表現の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) = $ 

しかし、あなたがしてOKです以上のことを許可するかもしれません途中で.*\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}を削除することは安全だと思います。彼らが2桁の年または1000年より前の年を望んでいる場合を除きます。 – Andrew