2013-04-13 99 views
0

我想建立一個if聲明,讀取URL參數並檢查它是否符合以下特殊模式:匹配模式PHP的preg_match特殊模式

Single capital letter (A to E), followed by 
Single capital letter (R, S, H, or T), followed by 
One digit (1 or 2), followed by 
Two digits (01 to 18), followed by 
Two digits (01 to 60), followed by 
Single capital letter (X or Y), followed by 
Pair of float numbers separated by a comma (5.8234,11.231134) 

例子:

AH20340X22.14,43.8241212 
CT11154Y1.431212,11.413 
ES10113X11.512341,55.134513 
+1

請出示你已經第一次嘗試(表現出一定的代碼) – bestprogrammerintheworld

+0

這將有助於閱讀[PCRE正則表達式語法](http://www.php.net/manual/en/reference.pcre.pattern.syntax.php)。 – Aiias

回答

1

你不能用一個正則表達式(有限狀態機)檢查一個數字是否在「01和18之間」,所以你必須作弊。

所以你必須寫:

Single capital letter (A to E) => [A-E] 
Single capital letter (R, S, H, or T) => [RSHT] 
One digit (1 or 2) => [12] 
Two digits (01 to 18) => ([0][1-9]|[1][0-8]) 
Two digits (01 to 60) => ([0][1-9]|[1-5][0-9]|60) 
Single capital letter (X or Y) => [XY] 
Float number => [0-9]+(\.[0-9]+)? 
Comma => , 
Float number => [0-9]+(\.[0-9]+)? 

所以,你將結束:

/[A-E][RSHT][12]([0][1-9]|[1][0-8])([0][1-9]|[1-5][0-9]|60)[XY][0-9]+(\.[0-9]+)?,[0-9]+(\.[0-9]+)?/