拆分所有未转义的分号

Kiu*_*ryy 4 javascript regex

我有一个包含分号的javascript-string(其中一些是转义的).

我的问题是,如何在所有未转义的分号上拆分此字符串并保留转义的分号

var example = "abc;def;ghi\;jk"
Run Code Online (Sandbox Code Playgroud)

这应该得到:

example[0] = "abc";
example[1] = "def";
example[2] = "ghi\;jk";
Run Code Online (Sandbox Code Playgroud)

我只发现了一个PHP-regex,它在javascript中不起作用:(

'/(?<!\\\);/'
Run Code Online (Sandbox Code Playgroud)

任何想法如何做到这一点?

mae*_*ics 8

JavaScript没有负面的后视(这会使这个问题变得简单),所以我们可以通过反转字符串并使用负面预测来模拟它!

function splitByUnescapedSemicolons(s) {
  var rev = s.split('').reverse().join('');
  return rev.split(/;(?=[^\\])/g).reverse().map(function(x) {
    return x.split('').reverse().join('');
  });
}

splitByUnescapedSemicolons("abc;def;ghi\;jk"); // => ["abc", "def", "ghi\;jk"]
Run Code Online (Sandbox Code Playgroud)

  • @ user1689607:你的解决方案是什么样的? (2认同)