javascript - 如何创建正则表达式来分割行,除非有斜杠?

标签 javascript regex

我正在使用 "my-string".split("\n") 将字符串拆分为行数组,效果很好。

但是现在我需要添加对连续字符“\”的支持。

我想更改我的分割,以便它将字符串分割成“\n”上的行除非如果“\n”之前有一个“\”字符

例如“THIS\nIS\nA\nTEST”将拆分为“THIS”、“IS”、“A\nTEST”

起初我以为我应该用占位符替换/\n 实例的所有实例,然后在最后将它们更改回来。但这是太多的处理。该字符串可能会很长,并且可能会占用很多行。

最佳答案

这称为负向后查找。这例如匹配前面没有 a 的 b: (?<!a)b

所以,你需要的是 (?<!\\)\n

更新 JavaScript 不支持负向后查找。不幸的是,没有单一的最佳策略来应对它。这是一个不错的博客,列出了所有可能的方法:http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

我个人会选择按“\n”进行拆分,即完全避免使用正则表达式,然后将末尾带有“\”的字符串加入数组中。对于这种特殊情况,如果延续是异常(exception)而不是规则,它将提供最佳性能。

关于javascript - 如何创建正则表达式来分割行,除非有斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355141/

相关文章:

javascript - 为什么这个对象 $window 是 Angular http Promise 对象

javascript - 是否有更简单(且仍然高性能)的方法来通过最近邻重采样来升级 Canvas 渲染?

Javascript 正则表达式无效组

java - 从字符串中提取数字

Python正则表达式从点分隔的字母中删除点

javascript - 导航栏在我的页面上滚动得太远

javascript - 开发复杂的 Javascript 应用程序时,可以使用多个 .JS 文件吗?

javascript - NPM 异步系列问题

正则表达式排除

java - 在 JAVA 中使用特定模式从字符串中获取子字符串