代码之家  ›  专栏  ›  技术社区  ›  R. Kohlisch

是否联接lookahead正则表达式并保留(所有)分隔符?

  •  0
  • R. Kohlisch  · 技术社区  · 7 年前

    现在,我的正则表达式遍历字符串并通过出现 / ,保留数组中的斜线。

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

    作为练习,我也希望 . , ? ! . 我怎么能在不把事情弄得太乱的情况下完成这件事呢?我是一个初学者,所以理想情况下我不希望有一个巨大的正则表达式字符串。理想情况下,我将创建一个正则表达式数组(数组中的每个元素处理一个分隔符)。我试过这么做,但失败了。

    1 回复  |  直到 7 年前
        1
  •  2
  •   anubhava    7 年前

    您可以使用一个字符类来包含您在匹配1+个字符之后拥有的所有分隔符,这些字符与除否定字符类中的分隔符之外的任何字符都匹配:

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