Как и в другом ответе, может быть лучше использовать цикл, потому что даже при знании разделителя трудно проверить, находится ли кавычка в середине данных (как литерал) или она действует какцитата.
Тем не менее, это регулярное выражение должно служить цели для данного случая:
/(?<!\|\s+"[\w\s]+)\n/
console.log(
`This is | a | line
This is | a line too | "but this field has
a line break"
This is | another | line`.split(/(?<!\|\s+"[\w\s]+)\n/)
)
?<!
является отрицательным взглядом сзади, что означает, что часть не в скобке(\n
) сопоставляется, только если часть в скобке не соответствует.
Часть в скобке является разделителем (|
), за которым следует более 1 пробела \s+
сразу за ним следует кавычка "
, а затем смесь слов и пробелов.
Надеюсь, это поможет.\s+
можно изменить на \s*
и [\w\s]+
также можно изменить на [^"]*
по желанию.
Демо