RegEx需要在"|"上拆分javascript字符串 但不是"\ |"

Med*_*Man 1 javascript regex

我们想在管道字符的实例上拆分一个字符串|,但如果该字符前面有一个转义字符,则不会\|.

我们希望看到以下字符串拆分为以下组件

1|2|3\|4|5

1
2
3\|4
5
Run Code Online (Sandbox Code Playgroud)

我希望能够使用以下javascript函数split,它采用正则表达式.什么正则表达式我会分裂?我们是跨平台的,如果可能的话,我想支持IE,FF和Chrome的当前版本和之前的版本(1版本).

Bar*_*ers 8

而不是拆分,进行全局匹配(与词法分析器相同):

  • 匹配除\\or之外的任何东西|
  • 或匹配任何转义的char

像这样的东西:

var str = "1|2|3\\|4|5";
var matches = str.match(/([^\\|]|\\.)+/g);
Run Code Online (Sandbox Code Playgroud)

快速解释:([^\\|]|\\.)匹配除('\''|':pattern:)[^\\|]或(pattern |:)之外的任何字符,它匹配任何转义字符(pattern :) \\..在+它告诉它后匹配以前的一次或多次:该模式([^\\|]|\\.)将为此进行一次或更多的比赛.将g在正则表达式文字的末尾告诉JavaScript的正则表达式引擎匹配的模式在全球而不是仅一次匹配它的.