尝试使用转义和非转义分隔符拆分字符串

时间:2018-08-14 18:33:51

标签: javascript regex

我有一个a b/c\/d\/e/f形式的字符串。我正在尝试在未转义的正斜杠上拆分字符串。

到目前为止,我有此正则表达式(?:[^\\/])/。但是,它消耗/之前的最后一个字符。因此,如果我要用“#”代替拆分,则字符串看起来像a #c\/d\/#f。在拆分的情况下,我将字符串分开,最后一个字符被消耗掉了。

我尝试使用一个非捕获组,但这似乎也不起作用。用javascript做到这一点。

1 个答案:

答案 0 :(得分:1)

您可以在JS中使用此正则表达式在/之前返回所有匹配项,而忽略所有转义的大小写,即\/。此正则表达式还处理\也被转义为\\的情况。

/[^\\\/]*(?:\\.[^\\\/]*)*(?=\/|$)/gm

RegEx Demo

const regex = /[^\\\/]*(?:\\.[^\\\/]*)*(?=\/|$)/gm
const str = `\\\\\\\\\\\\/a b/c\\/d\\\\/e\\\\\\/f1/2\\\\\\\\\\\\\\/23/99`;

let m = str.match(regex).filter(Boolean)

console.log(m)

  • .filter(Boolean)用于过滤空匹配项。