Shopify Parcelify运费计算排除指定加拿大邮编的正则问题求助
现有正则的问题
- 存在冗余错误规则:排除列表里多了重复的
g4w、额外的g4x,这两个不在你需要排除的FSA码范围内,会误拦符合配送条件的邮编 - 大小写逻辑不一致:部分FSA写了大写、部分写了小写,即便加了
i修饰符,也存在部分正则引擎适配问题 - 后段匹配逻辑混乱:
[a-zA-Z0-9]*.{3}$规则过松,没有适配加拿大邮编的标准格式,会导致大量合法邮编无法命中规则 - 存在多余修饰符:
g(全局匹配)、m(多行匹配)修饰符对单条邮编校验完全不需要,Parcelify的正则引擎大概率不支持这两个修饰符,会直接导致规则失效
可直接使用的修正后正则
如果不确定Parcelify是否支持忽略大小写修饰符,可以用全兼容版本:
/^(?![gG][0oO][cCeEgGjJtTwW]|[gG]4[rRtTwW]|[gG]5[jJlL]|[gG]8[pP]|[jJ]0[mM])[a-zA-Z]\d[a-zA-Z] ?\d[a-zA-Z]\d$/
如果确认Parcelify支持i(忽略大小写)修饰符,可以用简化版本:
/^(?!g0c|g0e|g0g|g0j|g0t|g0w|g4r|g4t|g4w|g5j|g5l|g8p|j0m)[a-z]\d[a-z] ?\d[a-z]\d$/i
规则说明
- 开头的负向先行断言精确匹配你列出的13个需要排除的FSA码,无多余排除项
- 后段严格匹配加拿大邮编标准格式:首3位为「字母+数字+字母」,可选中间空格,后3位为「数字+字母+数字」,同时适配带空格和不带空格的输入格式
- 去掉了多余的全局、多行修饰符,适配Parcelify的正则校验场景
内容的提问来源于stack exchange,提问作者xavier villeneuve
相关产品推荐
相关产品推荐

