如何用JavaScript正则表达式提取URL中特定格式的字符串
JavaScript正则提取URL路径中特定19位字符串解决方案
需求回顾
需要从URL中提取19位长度、以A开头的字符串,要求:
- 不能依赖固定路径段(如
/abc/)匹配 - 排除查询参数中类似格式的字符串
正则表达式方案
使用带断言的正则精准定位路径中的目标字符串:
const regex = /(?<=\/)A[A-Z0-9]{18}(?=\/|$|\?)/;
正则解释
(?<=\/):正向反向预查,确保目标字符串前是/,说明它处于URL路径段中,而非查询参数内A[A-Z0-9]{18}:匹配以A开头,后续18位大写字母/数字的字符串,总长度恰好19位(?=\/|$|\?):正向预查,确保目标字符串后是/(下一路径段)、URL结尾或?(查询参数起始),进一步锁定路径位置
使用示例
const urls = [ "https://example.com/abc/A3V5C96RVH3W9JS2TUP?parameters=abc", "https://example.com/pqrs/A3V5C96WVA3W9JS2TUP?parameters=abc", "https://example.com/u/click?_t=A20e1ffb2989453eaf5755b1940a5e02&_m=3983d6e6519b4de899be964096507c96&_e=JCanVuhVZwIxCtu4vrMeoOJkD73_W5aswybJFJ3oCDoAS583vt8rVhUPdMoKy87fF6Ku92ACv9F26yy-evyg0SK0D9ATYKemg0C14JezMrDy3NYAJfTg3FwZe2tmQ5bmqX-zmARM2j3VeWs8Xslv8JDIec4RoXfWbDGZ2akjm3Ws5iLpeYTCi-NgfBCnWHoIQejtPAIXNkyfOVsjmCvZFdZC8ZgaGqX6sMqa9Pe-bDfph3DMoE2zowCsqiEQYrG92Sq8ISkc0hu9HNpqtQ7IpcBSSKf66ZXuSK3uifuv_emnbiBfJD1qtbioQe7ZRKyM3f6cwiifcp4FGGcJVDJFZXWFeKBM_z0bsp12-cX2j81sYlkcQ_WDeLHE_xEJE0BogYMjaE6DbGI77Tdxy2M3dzYXVvCTVhoQkcZ6DTiRF5DA_i6C0WMWX2AfKnCZL3xt_MCXfqf5Vd99H0sr4iJ1GHhpit3DcrRpe18nwBLzi5qCpZ2XCvvbjlPBsCvWm8U7GbmDw7T7etiyuCnPlR299ZpQVLHskMSnnhGkt71fWTlBhOndKv5TKJzpk8iNqksJtrbhUBa9rapjLZbwwciSZeoau0BD1ER0wAUvvHRS-NUr8ySJ5eH6D2NEe3npGaG0GSETarAqnirs3qvUIl6xseZ94AGUk4bnD2wdsQ4LcbsC50JXd7gAEjcEBEMKUFsyZR2zIkB-LWQmGylUxwDlxZU1Z-Kq7MHlfqx9HHaexEq8%3D" ]; urls.forEach(url => { const match = url.match(regex); console.log(`URL: ${url.slice(0, 50)}...`); // 截断长URL方便查看 console.log(`提取结果: ${match ? match[0] : '无匹配'}`); });
执行结果
- 第一个URL:提取到
A3V5C96RVH3W9JS2TUP - 第二个URL:提取到
A3V5C96WVA3W9JS2TUP - 第三个URL:无匹配(目标字符串位于查询参数中,不满足路径位置断言)
内容的提问来源于stack exchange,提问作者pratheek
相关产品推荐
相关产品推荐

