GY1-9 邮政编码的正则表达式

发布于 2025-01-08 08:21:18 字数 299 浏览 0 评论 0原文

我正在尝试为我的运输部分创建一个不区分大小写的正则表达式,以捕获以 GY1 - GY9 开头的所有邮政编码(仅限单个数字)。到目前为止,它捕获了所有 gy 邮政编码,而不仅仅是 1-9。这是我到目前为止所得到的:

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

有什么想法吗?

编辑:

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

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

I'm trying to make a case insensitive regular expression for my shipping section that catches all postcodes which start with GY1 - GY9 (single figures only). So far, it catches all gy postcodes, not just 1-9. Here is what I have so far:

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

Any ideas?

Edit:

I used the following regex based on stema's answer below:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

梅窗月明清似水 2025-01-15 08:21:18

试试这个

/^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 的数字,后跟可选空格,然后是另一个数字和两个字母。

Try this

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

Your regex matches because there can be anything following your digit.

  • I use the negative lookahead assertion (?!\d) to ensure that there is not a digit after your [1-9].

  • The flag i at the end makes the regex matching case insensitive, so no need for [gG][yY]

See it here on Regexr

Edit:

When the second part can has only 1 leading digit you can try this

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

See it here on Regexr

Means starts with "GY" then a digit from 1-9, followed by an optional space, then another digit and two letters.

奢欲 2025-01-15 08:21:18

为了有效,格式始终为 GY,然后是 1-9,然后是可选空格,然后是 1 个数字,然后是 2 个字母。 GY 和最后 2 个字母不区分大小写。

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

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

读为:

  • ~ 模式定界符
  • ^ 字符串开头
  • gy (文字)
  • [1-9] 1 ... 9
  • ? 可选空格
  • \d 一个数字
  • [az]{2} 两个字母
  • $ 字符串结尾
  • ~ 模式分隔符
  • i 不区分大小写 - gy 以及 [az] 均匹配大小写。

For being valid and the format is always GY then 1-9 then optional space then 1 digit and then 2 letters. the GY and last 2 letters need to be case insensitive.

That description can be transposed into a regular expression right away:

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

Read as:

  • ~ pattern delimiter
  • ^ start of string
  • gy (literal)
  • [1-9] 1 ... 9
  • ? optional space
  • \d one digit
  • [a-z]{2} two letters
  • $ end of string
  • ~ pattern delimiter
  • i case insensitive - gy as well as [a-z] are matching both upper and lowercase.
爱冒险 2025-01-15 08:21:18
var reg=/^[gG][yY][1-9]$/

GY1
戈伊1
y1
gy1 ......

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

GY1
Gy1
gY1
gy1 .....

萌能量女王 2025-01-15 08:21:18
 '/^gy\d{1}$/i'

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

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

That should fix it. The $ says that the \d{1} should be the ending of the string, so it will accept "GY1" through "gy9", but not "GY12". Note that case sensitivity is easily done with the i modifier.

拥有 2025-01-15 08:21:18
$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
$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 />';
}

prints

GY1 AAA: invalid
GY2 2BX: valid
GY 545: invalid
gy5 5rt1: invalid
GY15HG: valid
GY10 8FG: invalid
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文