Регулярное выражение для почтовых индексов GY1-9 - PullRequest
0 голосов
/ 23 февраля 2012

Я пытаюсь сделать регистр без учета регистра для моего раздела доставки, который перехватывает все почтовые индексы, которые начинаются с GY1 - GY9 (только цифры).Пока он ловит все почтовые индексы gy, а не только 1-9.Вот что у меня есть:

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

Есть идеи?

Редактировать:

Я использовал следующее регулярное выражение, основанное на ответе Stema ниже:

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

Ответы [ 5 ]

2 голосов
/ 23 февраля 2012

Попробуйте это

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

Ваше регулярное выражение совпадает, потому что после вашей цифры может быть что угодно.

  • Я использую отрицательное прогнозное предположение (?!\d), чтобы гарантировать отсутствие цифры после вашего [1-9].

  • Флаг i в конце делает регистр сопоставления нечувствительным, поэтому нет необходимости в [gG][yY]

См. Здесь здесь, в Regexr

Редактировать:

Когда вторая часть может иметь только 1 начальную цифру, вы можете попробовать это

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

Посмотрите ее здесь на Regexr

Значения начинаются с «GY», затем цифры от 1 до 9, затем дополнительный пробел, затем еще одна цифра и две буквы.

1 голос
/ 23 февраля 2012

Для того, чтобы быть действительным и формат всегда 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 голосов
/ 23 февраля 2012
$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
0 голосов
/ 23 февраля 2012
 '/^gy\d{1}$/i'

Это должно исправить.$ Говорит, что \ d {1} должен быть концом строки, поэтому он будет принимать от «GY1» до «gy9», но не «GY12».Обратите внимание, что чувствительность к регистру легко сделать с помощью модификатора i.

0 голосов
/ 23 февраля 2012
var reg=/^[gG][yY][1-9]$/

GY1 Gy1 gY1 gy1 .....

...