2013-07-31 155 views
-1

我用這個驗證:驗證英國短郵政編碼

//validate postcode 
function IsPostcode($postcode) 
{ 
    $postcode = strtoupper(str_replace(' ','',$postcode)); 
    if(preg_match("/^[A-Z]{1,2}[0-9]{2,3}[A-Z]{2}$/",$postcode) || preg_match("/^[A-Z]{1,2}[0-9]{1}[A-Z]{1}[0-9]{1}[A-Z]{2}$/",$postcode) || preg_match("/^GIR0[A-Z]{2}$/",$postcode)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

From this link.

但我希望能夠驗證像ME20和TN10郵政編碼,而不是一個完全成熟的ME20 4RN,TN0 4RN的。

有人可以幫助我與正則表達式嗎?

+0

http://regular-expressions.info/tutorial.html – deceze

+0

有一個庫可以做到這一點https://gist.github.com/ChrisMcKee/4452116只需將incode選項設置爲只驗證第一部分 – Anigel

+0

你對於正則表達式模式有多少了解?只有最基本的正則表達式知識才能從你已有的起點找出答案。我建議去讀[更多關於正則表達式](http://www.regular-expressions.info/),而不是問這樣一個基本問題。你會學到更多的東西。 – Spudley

回答

2

,你可以用我的更新正則表達式來解決你的問題

從我結束工作,以驗證英國的郵政編碼

<?php 
function IsPostcode($postcode) 
{ 
    $postcode = strtoupper(str_replace(' ','',$postcode)); 
    if(preg_match("/(^[A-Z]{1,2}[0-9R][0-9A-Z]?[\s]?[0-9][ABD-HJLNP-UW-Z]{2}$)/i",$postcode) || preg_match("/(^[A-Z]{1,2}[0-9R][0-9A-Z]$)/i",$postcode)) 
    {  
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

echo $result = IsPostcode('ME20'); 
?> 

輸出

希望這將肯定幫助你。