在一段特定的文本后替换给定长度的子字符串

问题描述

我被卡住了 :) 使用 javascript。 我从一个仪器得到输出,下面是部分输出。我需要验证这些数据。 在以“MSH”开头的行上,仪器字段之后是日期和时间
20210204220807+00:00
这在输出中重复了几次,我想把它从字符串中去掉。

我会将系统日期和时间精确到分钟。例如 202102042208 。我如何使用它来删除整个文本出现的任何地方?所以替换202102042208+接下来的8个字符。

不知道我该怎么做?任何帮助表示赞赏

MSH|^~\&|New1|| Instrument 1||**20210204220807+00:00**||RSP^K11^RSP_K11|547CwlxiBkSMM9D2tSU+pw|P|2.5.1||||||UNICODE UTF-8|||LAB-27R^wegewg
MSA|AA|1234
QAK|query1234|OK|INIBAR^^99ROC
QPD|INIBAR^^99ROC|query1234|Sample1|50001|1|||||SERPLAS^^99ROC|^^99ROC|R 

解决方法

你可以使用^(MSH.*)202102042208.{8}

  • ^(MSH.*),捕获从MSH**的匹配字符串,用于替换或$1
  • .{8} 匹配任何长度为 8 的字符

var str = `MSH|^~\&|New1|| Instrument 1||**20210204220807+00:00**||RSP^K11^RSP_K11|547CwlxiBkSMM9D2tSU+pw|P|2.5.1||||||UNICODE UTF-8|||LAB-27R^wegewg
MSA|AA|1234
QAK|query1234|OK|INIBAR^^99ROC
QPD|INIBAR^^99ROC|query1234|Sample1|50001|1|||||SERPLAS^^99ROC|^^99ROC|R 
MSH|^~\&|New1|| Instrument 1||**20210204220807+00:00**||RSP^K11^RSP_K11|547CwlxiBkSMM9D2tSU+pw|P|2.5.1||||||UNICODE UTF-8|||LAB-27R^wegewg`

str = str.replace(/^(MSH.*)202102042208.{8}/gm,'$1Date_Removed')
console.log(str)