如何用正则全局替换JS中的'./'?现有代码无法正常运行
搞定JavaScript替换'./'和正斜杠的问题
嘿,你的代码没法正常工作,核心问题出在正则表达式的特殊字符没转义上,我给你一步步拆解解决办法:
先解决替换所有'./'的问题
你写的/.//g正则有两个坑:
- 正则里的
.是通配符,能匹配任意字符,不是你要找的那个点; /是正则的分隔符,直接写会导致语法错误。
要准确匹配字符串里的./,得把这两个特殊字符用反斜杠\转义,改成/\.\//g。修改后的代码如下:
var text = './test'; var baseUrl = 'http://www.example.com/'; // 转义.和/,全局匹配所有./ text = text.replace(/\.\//g, baseUrl); console.log(text); // 输出:http://www.example.com/test
再处理正斜杠的替换需求
你说还想替换正斜杠,得看你具体要啥效果,分两种常见情况给你方案:
1. 把所有正斜杠换成其他字符
比如想把所有/换成-,同样要转义/,用正则全局替换:
// 全局替换所有/为- text = text.replace(/\//g, '-'); // 要是只换第一个,直接用字符串替换就行:text = text.replace('/', '-');
2. 拼接路径时处理多余斜杠
如果你的需求是把相对路径转成绝对路径,同时避免出现//这种重复斜杠,可以先替换./,再清理多余的斜杠:
var text = './test/abc/'; var baseUrl = 'http://www.example.com/'; // 第一步:替换所有./ text = text.replace(/\.\//g, baseUrl); // 第二步:把连续多个/换成单个/ text = text.replace(/\/+/g, '/'); console.log(text); // 输出:http://www.example.com/test/abc/
额外偷懒技巧
要是你经常处理路径转换,其实不用自己写正则,用浏览器自带的URL API更省心,它会自动处理相对路径、斜杠这些细节:
var text = './test'; var baseUrl = 'http://www.example.com/'; var absoluteUrl = new URL(text, baseUrl).href; console.log(absoluteUrl); // 输出:http://www.example.com/test
内容的提问来源于stack exchange,提问作者peter flanagan
相关产品推荐
相关产品推荐

