2013-10-04 45 views
0

格式是:需要正則表達式匹配的格式如下

19位數字加下劃線,接着4位數字,後跟下劃線,接着1位,後跟下劃線,隨後1個大寫字母,後面跟着一個下劃線,後面跟着4位數字,後面跟着破折號,後面跟着2位數字,後面跟着破折號,後面跟着2位數字,後面跟着下劃線,後面跟着2位數字,後面跟着破折號,後面跟着2位數字,後面是一個破折號,後面跟着2個數字,後面跟着一個".db"分機號碼

這裏有幾個文件名,因爲我認爲上面的信息會很無聊。 :) thanx提前給任何人誰回答。

2408002705100010002_0002_0_V_2012-11-02_06-35-24.db 2408002705100010001_0001_0_V_2012-11-05_05-32-06.db 2408001000200000002_0002_0_E_2012-03-03_00-20-06.db

+1

你嘗試過什麼嗎?用什麼語言你會使用正則表達式? – Jerry

+1

描述看起來很直接,你嘗試了什麼? –

+1

您正在使用哪種正則表達式引擎? –

回答

1

\d{19}_\d{4}_\d_[A-Z]_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.db

http://gskinner.com/RegExr/ - 一個網站,以測試你的正則表達式

,但我注意到,例如,在中間你有某事像_0002_

你接受任何4位數字或那些啓動與「000」?

0
\d{19}_\d{4}_\d_[A-Z]_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.db 

這一個也沒有一個基本支票上的日期/時間的一部分(假定日期YYYY-MM-DD):

\d{19}_\d{4}_\d_[A-Z]_\d{4}-(0(?!0)|1(?=[0-2]))\d-(0(?!0)|[1-2]|3(?=[0-1]))\d_([0-1]|2(?=[0-3]))\d(-[0-5]\d){2}\.db 

基本檢查意味着您仍然可以插入日期,如2月30日,但不是1月32日。

+0

thanx很多的幫助。要在我的PHP項目中使用此解決方案 –

0

根據您的數據:

\d{19}_0+\d_0_(V|E)?_(-?(\d{2}|\d{4}))+_(-?\d{2})+\.db 

如果尋求更通用:

\d{19}_\d+_\d_[A-Z]?_\d{4}(-\d{2}){2}_(-?\d{2})+\.db 

HTH

編輯:在一個側面說明,我寧願這個字符串_分裂,然後根據某種模式和/或屬性單獨驗證每個部分。這樣你可以更好地控制這個字符串的外觀。