3 回答
TA贡献1801条经验 获得超8个赞
我认为 Firefox 还不支持lookbehinds。相反,您可以使用捕获组进行拆分以保留定界符,匹配组内不是正斜杠的任何前面的字符,然后过滤以删除空字符串。例如:
let s = 'a/b/c'.split(/([^/]*\/)/).filter(x => x);
console.log(s);
// ["a/", "b/", "c"]
let s = 'a//b'.split(/([^/]*\/)/).filter(x => x);
console.log(s);
// ["a/", "/", "b"]
TA贡献1827条经验 获得超9个赞
我不知道为什么那个东西在其他浏览器中不起作用。但是您可以使用以下技巧replace:
var text = 'a/b/c';
var splitText = text
.replace(new RegExp(/\//, 'g'), '/ ') // here you are replacing your leading slash `/` with slash + another symbol e.g. `/ `(space is added)
.split(' ') // to further split with added symbol as far as they are removed when splitting.
console.log(splitText) // ["a/", "b/", "c"]
通过这种方式,您可以避免使用在 FireFox、Edge 等中不起作用的复杂正则表达式。
添加回答
举报