You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则匹配特定模式并排除子串?新西兰地址验证需求

新西兰地址验证的HTML5正则表达式方案

最终正则表达式(支持HTML5表单验证)

^(?![\s\S]*(?:p\s*o\s*b\s*o\s*x|p\s*r\s*i\s*v\s*a\s*t\s*e\s*b\s*a\s*g))\d[\p{L}\d\s\/\,\'\-\u0101\u0113\u012B\u014D\u016B]*$

附加标志:i(不区分大小写匹配)


正则拆解说明

  1. ^:锁定字符串起始位置
  2. (?![\s\S]*(?:p\s*o\s*b\s*o\s*x|p\s*r\s*i\s*v\s*a\s*t\s*e\s*b\s*a\s*g)):负向前瞻规则,确保地址中不存在任意大小写、任意空格组合的PO Box(如pobox、PO BOX、P O B O X)或Private Bag(如privatebag、PRIVATEBAG)
  3. \d:强制地址必须以数字开头
  4. [\p{L}\d\s\/\,\'\-\u0101\u0113\u012B\u014D\u016B]*:匹配后续所有允许的字符:
    • \p{L}:匹配任意Unicode字母(覆盖英语及毛利语基础字母)
    • \d:数字
    • \s:空格
    • \/、\,、\'、\-:斜杠、逗号、单引号、连字符
    • \u0101\u0113\u012B\u014D\u016B:明确匹配毛利语带重音的元音(ā、ē、ī、ō、ū)
  5. $:锁定字符串结束位置

HTML5表单直接使用示例

把正则放到input标签的pattern属性中,配合title提示错误信息:

<input 
  type="text" 
  pattern="^(?![\s\S]*(?:p\s*o\s*b\s*o\s*x|p\s*r\s*i\s*v\s*a\s*t\s*e\s*b\s*a\s*g))\d[\p{L}\d\s\/\,\'\-\u0101\u0113\u012B\u014D\u016B]*$" 
  title="请输入有效的新西兰地址:需以数字开头,不能包含PO Box/Private Bag相关内容,仅允许字母、数字、空格、/-,'及毛利语带重音元音" 
  required
>

浏览器会自动处理验证逻辑,无需额外编写JavaScript判断。


兼容旧浏览器的替代方案

如果需要兼容不支持Unicode属性转义(\p{L})的旧浏览器,可以将字符类替换为明确枚举的形式:

^(?![\s\S]*(?:p\s*o\s*b\s*o\s*x|p\s*r\s*i\s*v\s*a\s*t\s*e\s*b\s*a\s*g))\d[A-Za-zĀāĒēĪīŌōŪū\d\s\/\,\'\-\u0101\u0113\u012B\u014D\u016B]*$

内容的提问来源于stack exchange,提问作者Jeremy Leys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:27:28