加入前瞻正则表达式并保留(所有)定界符?

时间:2018-07-02 13:59:13

标签: javascript regex split

现在,我的正则表达式遍历字符串并按/的出现将其拆分,并将斜杠保留在数组中。

var str = 'File/path/to/a/file.js';
let delim = /[^\/]+\/?|\//g; 
var tokens = str.match(delim);
// ["File/","path/","to/","a/","file.js"]

作为练习,我也想按.?!划分。我如何才能做到这一点而又不会太杂乱呢?我是一个初学者,所以理想情况下,我希望没有一个庞大的正则表达式字符串。理想情况下,我将创建一个正则表达式数组(该数组的每个元素处理一个定界符)。我曾尝试这样做,但失败了。

1 个答案:

答案 0 :(得分:2)

您可以使用字符类来包含匹配1+个与除否定字符类中的定界符之外的任何字符都匹配的字符之后的所有定界符:

var str = 'File/path/to/a/file.js';
let arr = str.match(/[^\/.?!]+(?:[\/.?!]|$)/g);

console.log(arr);