2012-02-23 1 views
0

GY1〜GY9で始まるすべてのポストコードをキャッチする私の配送セクションの大文字小文字を区別しない正規表現を作成しようとしています(単一数字のみ)。これまでのところ、1〜9だけではなく、すべてのgyポストコードをキャッチしています。ここに私はこれまで持っているものです:GY1-9ポストコードの正規表現

^[gG][yY][1-9]{1} 

アイデア?

編集:

私は以下stemaの回答に基づいて、次の正規表現を使用:あなたの桁以下のものが存在する可能性があるため

^[gG][yY][1-9]\s?[1-9][a-zA-Z]{2}$ 
+0

それがキャッチし、それがキャッチしているべきではありません郵便番号の例を教えてください。あなたの正規表現が私にはうまく見えるので、私は尋ねます。 – hakre

+0

GY1 1aaまたはGY15HG –

+0

有効または無効の場合は?有効な例は何でしょうか、無効なものは何ですか? – hakre

答えて

2

この

/^GY[1-9](?!\d)/i 

あなたの正規表現マッチを試してみてください。私は数字があなたの[1-9]後がないことを確認するために、負の先読みアサーション(?!\d)を使用

  • 末端にFLAG iので[gG][yY]

の必要が見る、正規表現マッチングケースが鈍感になり、それhere on Regexr

編集:

とき第2の部分は缶あなたがこれを試すことができる最初の桁は1つだけです

^GY[1-9]\s?[1-9][a-z]{2} 

here on Regexr

手段は、別の桁の二文字は、「GY」とオプション空間続い1~9の数字を、開始参照します。それを修正する必要があり

+0

唯一の問題は、郵便番号の2番目の部分が2桁の数字で始まり、GY番号の後にスペースを含む可能性があることです。最初の郵便番号はGY1 1aaであり、GY15HGも可能です。 –

+0

@PhilFaceplantYoung 2番目の部分は常に1桁で始まります。 GY1 23AA/GY123AA? – stema

+0

最初の部分の後には常に1つの数字と2つの文字があります。まだ/ iが必要ですか?例えば^ [1-9] [1-9] [a-z] {2}/i- –

0
var reg=/^[gG][yY][1-9]$/ 

GY1 GY1 GY1 GY1 .....

0
'/^gy\d{1}$/i' 

。 $は\ d {1}が文字列の終わりでなければならないので、 "GY1"から "gy9"を受け取りますが、 "GY12"では受け付けません。大文字と小文字の区別は、i修飾子を使って簡単に行うことができます。

1

フォーマットは常に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]は大文字と小文字の両方で一致しています。
0
$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