求Facebook Ads的Website URL与Display link校验正则表达式
Facebook Ads Manager URL 校验正则表达式(适配Marketing API前置校验)
我之前帮不少开发者处理过Facebook Marketing API的前置校验痛点,确实官方文档里没明确公开URL校验的具体正则规则。不过通过反复测试Ads Manager的实际输入限制,以及逆向分析API返回的错误提示,整理出了两套适配性很高的正则,分别对应Website URL和Display link的校验需求:
1. Website URL 校验正则
这个正则严格匹配Ads Manager对落地页URL的要求,覆盖了协议规范、域名合规性以及路径参数的允许范围:
^https?:\/\/(www\.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}(\/[^\s]*)?$
规则拆解:
- 必须以
http://或https://开头(Facebook强制落地页URL带协议) - 可选带
www.前缀,无也可通过校验 - 域名主体严格符合ICANN规范:长度1-63字符,仅允许字母、数字、连字符,且首尾不能是连字符
- 顶级域名(TLD)至少2个字符,仅支持字母(比如
.com、.co.uk这类多级TLD也兼容) - 允许后续带路径、查询参数或锚点,只要不包含空格字符
2. Display link 校验正则
Display link的规则相对宽松,支持省略协议(Ads Manager会自动补全https),适合品牌化的短展示链接:
^(https?:\/\/)?(www\.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}(\/[^\s]*)?$
规则拆解:
- 可选
http://或https://协议(省略时Facebook会自动补全为https) - 可选
www.前缀 - 域名部分规则和Website URL完全一致
- 允许带简短路径,但同样不能包含空格
额外避坑提示
- 正则只是前置过滤,即使通过校验,仍可能因为域名被Facebook拉黑、URL无法正常访问、内容违反广告政策等原因导致API请求失败,建议在正则校验后再做简单的可访问性检查
- 避免使用非ASCII字符(比如中文域名、emoji),即使正则兼容,Ads Manager大概率会拒绝
- 测试时可以手动在Ads Manager里输入边缘案例(比如带多层路径的URL、短域名如
bit.ly/xxx),验证正则的覆盖范围
示例代码(Python)
import re def validate_facebook_website_url(url): pattern = r"^https?:\/\/(www\.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}(\/[^\s]*)?$" return re.fullmatch(pattern, url) is not None def validate_facebook_display_link(link): pattern = r"^(https?:\/\/)?(www\.)?[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}(\/[^\s]*)?$" return re.fullmatch(pattern, link) is not None # 测试用例 print(validate_facebook_website_url("https://www.example.com/promo?utm=fb")) # True print(validate_facebook_display_link("example.com")) # True print(validate_facebook_website_url("example.com")) # False(缺少协议)
内容的提问来源于stack exchange,提问作者Grzegorz Pasnik
相关产品推荐
相关产品推荐

