我正在尝试为我的发货部分制作一个不区分大小写的正则表达式,它捕获所有以GY1-GY9开头的邮政编码(仅限单个数字)。到目前为止,它捕获所有gy邮政编码,而不仅仅是1-9。以下是我到目前为止的情况:
^[gG][yY][1-9]{1}
有什么想法吗?
修改
我根据下面的stema答案使用了以下正则表达式:
^[gG][yY][1-9]\s?[1-9][a-zA-Z]{2}$
答案 0 :(得分: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的数字,后跟可选空格,然后是另一位数字和两个字母。
答案 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