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

在DataWeave中匹配URL的适用正则表达式是什么?

你现有代码匹配失败的两个核心原因:

  1. 正则强制要求URL以http://或https://开头,你测试用的mycompany.com没有协议前缀,无法命中规则。
  2. 正则中路径匹配部分的//未转义,在DataWeave的正则语法中,正斜杠需要加反斜杠转义为\/,否则会识别为正则结束标记导致语法异常。

适配DataWeave的可用正则(分两种场景)

场景1:兼容带/不带HTTP/HTTPS协议的URL匹配

正则表达式:
/^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/

示例测试代码:

%dw 2.0
var myString = "mycompany.com"
output application/json
---
{
    // 判断全串是否符合URL规则,返回布尔值用matches
    isMatch: myString matches /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/,
    // 提取匹配内容用match
    matchResult: myString match /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/
}

运行返回结果:

{
  "isMatch": true,
  "matchResult": ["mycompany.com", null, null, ""]
}

场景2:要求URL必须带HTTP/HTTPS协议

只需把正则开头的可选标记?删除即可,正则如下:
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$/


补充说明

  • 仅需要判断字符串是否符合URL格式时,优先用matches函数,直接返回布尔值,逻辑更简洁。
  • 如果需要提取URL中的协议、域名、路径等分组内容,再使用match函数,返回的数组对应全匹配结果和各个分组的匹配值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:06:06