如何利用正则表达式移除URL中的..;类匹配内容以优化URL?
解决方法
首先调整你的正则表达式,让它更精准匹配目标模式,再用字符串替换功能把匹配到的内容替换为单个斜杠(避免出现多斜杠问题)。
调整后的正则
推荐使用:/(?:\.\.;+)+/g(全局匹配)
\/:精准匹配单个前置斜杠(?:\.\.;+):非捕获组,匹配至少2个点+至少1个分号的组合+:允许上述组合连续出现多次(比如/..;/..;/这类重复模式)g:全局标志,确保替换所有符合条件的片段
各语言实现示例
Python
import re # 测试目标URL集合 test_urls = [ "abc.com/..;/abc", "abc.com/..;/..;/abc", "abc.com/..;;/abc" ] pattern = r'/(?:\.\.;+)+/' for url in test_urls: clean_url = re.sub(pattern, '/', url) # 可选:处理原URL可能存在的多斜杠情况 clean_url = re.sub(r'/+', '/', clean_url) print(clean_url) # 所有测试用例输出均为 abc.com/abc
JavaScript
const testUrls = [ "abc.com/..;/abc", "abc.com/..;/..;/abc", "abc.com/..;;/abc" ]; const pattern = /\/(?:\.\.;+)+/g; testUrls.forEach(url => { let cleanUrl = url.replace(pattern, '/'); // 可选:合并连续多斜杠 cleanUrl = cleanUrl.replace(/\/+/g, '/'); console.log(cleanUrl); }); // 所有测试用例输出均为 abc.com/abc
补充说明
如果你的场景需要匹配无前置斜杠的模式(比如abc.com..;/abc),可以把正则开头的\/换成\/?(匹配0或1个斜杠),但根据你给出的示例场景,应该不需要这种调整。
内容的提问来源于stack exchange,提问作者Shubhankar Kumar
相关产品推荐
相关产品推荐

