разделение нескольких строк javascript

Я работаю над приложением, которое вводит один запрос в поле записи в базе данных .
на данный момент мне нужно взять строку, содержащую запрос и разделить запятыми

Это строка

APDoc.brn, APDoc.rbtn, APDoc.perd, APDoc.dtip, APDoc.U5, APDoc.Stt, APDoc.Ivcn, APDoc.InvcD, APDoc.Vndd AS Rut, Venr.ae AS Proveedor, APDoc.At, CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1  WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac], APDoc.POr, APDoc.Sb AS Entidad, APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo,  datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS 

в основном не было проблем, разделив их с помощью split () и join ()

queryCortada      = queryCortada.split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").split(",");

проблема в том, что последнее поле разделяет его на следующие

datediff(day,
APDoc.Inate,
GETDATE()) AS DIFERENCIA_DIAS 

Мне нужно, чтобы это поле было только одним, идея состоит в том, чтобы иметь следующее

APDoc.brn,
APDoc.rbtn,
APDoc.perd,
APDoc.dtip,
APDoc.U5,
APDoc.Stt,
APDoc.Ivcn,
APDoc.InvcD,
APDoc.Vndd AS Rut,
Venr.ae AS Proveedor,
APDoc.At,
CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1  WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac],
APDoc.POr, APDoc.Sb AS Entidad,
APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo,
datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS

Исходный текст может содержать несколько полей как datediff( asdas, asdasd, asdasd)

2 ответа

  1. Для этого нужно либо написать сложное регулярное выражение, либо разобрать строку с помощью лексической машины состояний.

    Простой раскол всегда будет вызывать проблемы с будущими заявлениями, даже если вы думаете, что вы покрыли свои основания сегодня.

  2. Не могли бы вы попробовать это?

    queryCortada.replace(/\((.*)\)+/g, "(temp**comma)").split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").replace(/temp\*\*comma/g, ",").split(",");