首页 > 解决方案 > JavaScript String.split(): 分割为 ; 前面没有反斜杠?

问题描述

我需要按每个分割一个字符串;未转义(即前面有 0、2、4、6 等反斜杠)。

已经有几个关于这个问题的线程,但我没有找到任何对我有用的东西。我尝试的每个正则表达式要么给出错误,要么在任何有效的分隔符处拆分字符串,或者根本不拆分。

"statement1(); statement2('\;');".split(/(\\.;[^;])+/g)

这例如刚刚返回 ['statement1(); 语句2(\';\');' ]。还有什么想法吗?

标签: javascriptregexstringsplit

解决方案


您可以使用后向断言来解决此问题:

/(?<=[^\\]);/

应该做你需要的。它说 match;前面有一个不是\.

在另一种编程语言中,我会使用否定的后向断言,但只有最新版本的 JavaScript 支持它,因此将其编写为积极的后向断言更安全,如上所述。


推荐阅读