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

求匹配特定URL格式的JavaScript正则表达式

针对两类URL路径的JavaScript正则解决方案

嘿,我来帮你搞定这两个URL路径的正则匹配需求!下面是对应场景的正则表达式,以及详细的解释和测试示例:

场景1:匹配http://localhost:3000/anyword中的/anyword/

首先针对本地服务的URL,我们可以用这个基础正则:

/\/[^\/]+\/?$/

规则解释:

  • \/:匹配开头的斜杠(转义是因为斜杠是正则的默认分隔符)
  • [^\/]+:匹配任意非斜杠的字符(也就是anyword部分,至少包含一个字符)
  • \/?$:匹配可选的末尾斜杠,然后锚定到字符串结尾(如果原URL没有末尾斜杠,也能匹配出/anyword;如果要强制匹配带末尾斜杠,去掉?即可)

如果需要精准校验localhost:3000开头的URL,可以加上前缀限制:

/http:\/\/localhost:3000(\/[^\/]+\/?)$/

这里的捕获组$1就是你要提取的目标路径。

场景2:匹配https://www.somedomain/ln/anyword中的/ln/anyword/(ln为任意两个字母)

针对带双字母语言前缀的URL,正则可以这样写:

/\/[a-z]{2}\/[^\/]+\/?$/i

规则解释:

  • \/[a-z]{2}\/:匹配/xx/格式的双字母部分,i修饰符支持忽略大小写(如果只需要小写可以去掉)
  • [^\/]+:匹配后续的anyword部分
  • \/?$:同样匹配可选的末尾斜杠

如果要精准校验https://www.somedomain开头的URL,前缀可以调整为:

/https:\/\/www\.somedomain(\/[a-z]{2}\/[^\/]+\/?)$/i

捕获组$1就是目标路径/ln/anyword/(或/ln/anyword)。

合并正则(同时兼容两类场景)

如果需要一个正则同时处理两种情况,可以用分支条件实现:

/(?:http:\/\/localhost:3000(\/[^\/]+\/?)|https:\/\/www\.somedomain(\/[a-z]{2}\/[^\/]+\/?))$/i

说明:

  • (?:...):非捕获组,用来包裹两个独立匹配分支
  • 第一个分支对应本地URL,捕获组$1是目标路径;第二个分支对应带语言前缀的URL,捕获组$2是目标路径
  • 可以根据实际匹配结果判断哪个捕获组有值。

测试示例

// 场景1测试(无末尾斜杠)
const url1 = 'http://localhost:3000/home';
const match1 = url1.match(/http:\/\/localhost:3000(\/[^\/]+\/?)$/);
console.log(match1[1]); // 输出 "/home"

// 场景2测试(带末尾斜杠)
const url2 = 'https://www.somedomain/fr/contact/';
const match2 = url2.match(/\/[a-z]{2}\/[^\/]+\/?$/i);
console.log(match2[0]); // 输出 "/fr/contact/"

// 合并正则测试
const url3 = 'https://www.somedomain/en/about';
const match3 = url3.match(/(?:http:\/\/localhost:3000(\/[^\/]+\/?)|https:\/\/www\.somedomain(\/[a-z]{2}\/[^\/]+\/?))$/i);
console.log(match3[2]); // 输出 "/en/about"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:48:26