GY1-9后编码的正则表达式

时间:2012-02-23 10:36:09

标签: php regex drupal drupal-7 ubercart

我正在尝试为我的发货部分制作一个不区分大小写的正则表达式,它捕获所有以GY1-GY9开头的邮政编码(仅限单个数字)。到目前为止,它捕获所有gy邮政编码,而不仅仅是1-9。以下是我到目前为止的情况:

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

有什么想法吗?

修改

我根据下面的stema答案使用了以下正则表达式:

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

5 个答案:

答案 0 :(得分:2)

试试这个

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

您的正则表达式匹配,因为您的数字后面可能有任何内容。

  • 我使用否定前瞻声明(?!\d)来确保[1-9]之后没有数字。

  • 最后的标记i使正则表达式匹配不区分大小写,因此不需要[gG][yY]

here on Regexr

修改

当第二部分只有1个前导数字时,你可以尝试这个

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

here on Regexr

手段以“GY”开头,然后是1-9的数字,后跟可选空格,然后是另一位数字和两个字母。

答案 1 :(得分:1)

  

为了有效并且格式总是GY然后是1-9然后是可选空格,然后是1位数,然后是2个字母。 GY和后两个字母需要不区分大小写。

该描述可以立即转换为正则表达式:

~^gy[1-9] ?\d[a-z]{2}$~i

读作:

  • ~模式分隔符
  • ^字符串开头
  • gy(字面意思)
  • [1-9] 1 ... 9
  • ?可选空间
  • \d一位数
  • [a-z]{2}两个字母
  • $字符串结尾
  • ~模式分隔符
  • i不区分大小写 - gy以及[a-z]都匹配大写和小写。

答案 2 :(得分:0)

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

GY1 GY1 GY1 gy1 .....

答案 3 :(得分:0)

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

那应该解决它。 $表示\ d {1}应该是字符串的结尾,因此它将通过“gy9”接受“GY1”,但不接受“GY12”。请注意,使用i修饰符可以轻松完成区分大小写。

答案 4 :(得分: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