我想爲我的裝運部分製作一個不區分大小寫的正則表達式,它捕獲以GY1 - GY9(僅限單個數字)開頭的所有郵政編碼。到目前爲止,它捕獲所有gy郵編,而不僅僅是1-9。這是我到目前爲止:GY1-9郵政編碼的正則表達式
^[gG][yY][1-9]{1}
任何想法?
編輯:
我使用了基於以下STEMA的回答下面的正則表達式:
^[gG][yY][1-9]\s?[1-9][a-zA-Z]{2}$
我想爲我的裝運部分製作一個不區分大小寫的正則表達式,它捕獲以GY1 - GY9(僅限單個數字)開頭的所有郵政編碼。到目前爲止,它捕獲所有gy郵編,而不僅僅是1-9。這是我到目前爲止:GY1-9郵政編碼的正則表達式
^[gG][yY][1-9]{1}
任何想法?
編輯:
我使用了基於以下STEMA的回答下面的正則表達式:
^[gG][yY][1-9]\s?[1-9][a-zA-Z]{2}$
試試這個
/^GY[1-9](?!\d)/i
你的正則表達式匹配,因爲可以有任何以下的數字。
我用式斷言(?!\d)
,以確保沒有你的[1-9]
後一個數字。
在結束標誌i
使正則表達式匹配大小寫不敏感的,所以沒有必要[gG][yY]
編輯:
當第二部分可以只有1個前導數字,你可以試試這個
^GY[1-9]\s?[1-9][a-z]{2}
意味着「GY」開頭,然後從1-9的數字,後面跟着一個可選的空間,那麼另一個數字和兩個字母。
唯一的問題是,郵編的第二部分以數字後跟兩個字母開始,並且可能在GY數字之後有空格,例如,第一個郵編是GY1 1aa,你也可以有GY15HG。 – 2012-02-23 10:48:36
@PhilFaceplantYoung第二部分始終以一個數字開始,或者也可以有兩個數字,例如GY1 23AA/GY123AA? – stema 2012-02-23 10:57:00
第一部分後面總是一個數字和兩個字母。它還需要/我嗎?例如^ GY [1-9] \ s?[1-9] [a-z] {2}/i? – 2012-02-23 11:06:19
var reg=/^[gG][yY][1-9]$/
GY1 GY1 GY1 GY1 .....
'/^gy\d{1}$/i'
這應該修復它。 $表示\ d {1}應該是字符串的結尾,所以它將通過「gy9」接受「GY1」,但不接受「GY12」。請注意,區分大小寫使用i
修飾符很容易完成。
爲了有效和格式總是GY然後1-9然後可選空間然後1個數字,然後2個字母。 GY和最後2個字母需要不區分大小寫。
即描述均可被轉變爲正則表達式馬上:
~^gy[1-9] ?\d[a-z]{2}$~i
讀爲:
~
圖案定界符^
串的開始gy
(字面)[1-9]
1 ... 9?
可選空間\d
一個數字[a-z]{2}
兩個字母$
串的端~
圖案定界符i
大小寫不敏感 - gy
以及[a-z]
大小寫都匹配。$pattern = '/^GY[0-9]()?[0-9][A-Z]{2}?$/i';
$codes = array(
'GY1 AAA',
'GY2 2BX',
'GY 545',
'gy5 5rt1',
'GY15HG',
'GY10 8FG'
);
foreach($codes as $code){
echo $code, ': ';
if (preg_match($pattern, $code)){
echo 'valid';
}
else { echo 'invalid'; }
echo '<br />';
}
打印
GY1 AAA: invalid
GY2 2BX: valid
GY 545: invalid
gy5 5rt1: invalid
GY15HG: valid
GY10 8FG: invalid
請給出郵編它不應該趕上的一個例子,但它抓住。我問,因爲你的正則表達式對我來說很好。 – hakre 2012-02-23 10:37:20
它可能是GY1 1aa或GY15HG – 2012-02-23 10:49:10
有效或無效?什麼是一個有效的例子,什麼是無效的例子?如果你不清楚應該匹配什麼,很難寫出正則表達式;) – hakre 2012-02-23 10:50:55