2017-10-05 150 views
-2

我想找到一个正则表达式来实现以下标准,我需要在JavaScript中使用。正则表达式找到字符串,并替换该行和以下行

输入文件

一些字符串是在这里,这条线以上
:62M:C111111EUR1211498,00
:20:0000/11111000000
:25:1111111111
:28C:00001/00002
:60M:C170926EUR1211498,06
:61:1710050926C167,XXNCHKXXXXX 11111 //十一万一千一百十一分之十一万一千一百十一

输出必须是

一些字符串是在这里,这个线路
以上:61:1710050926C167,XXNCHKXXXXX 11111 //十一万一千一百十一分之一十一万一千一百十一

简言之,发现:62M:然后更换(和删除)以62M开始的行:紧接着以20 :,:25 :, 28c:和60M:开头的行。

或者找到:62M:并替换(和删除),直到以61:开头的行。

每一行的固定长度为80个字符,后跟换行符(CR LF)。

这真的可能与正则表达式? 我知道如何找到一个字符串,并替换字符串所在的同一行。但是这里有多条要删除的行,这对我来说很难。

如果有可能用正则表达式,请有人帮助我。

+0

这篇文章应该有所帮助:https://www.w3schools.com/jsref/jsref_obj_regexp.asp – Maxim

回答

0

这是。首先,我发现使用正则表达式删除文本(请注意,我使用[^]*来匹配.*的所有行,因为它也匹配换行符)。然后我用换行符替换它。

var regex = /:62M:.*([^]*):61:.*/; 
 
var text = `some string is here and above this line 
 
:62M:C111111EUR1211498,00 
 
:20:0000/11111000000 
 
:25:1111111111 
 
:28C:00001/00002 
 
:60M:C170926EUR1211498,06 
 
:61:1710050926C167,XXNCHKXXXXX 11111//111111/111111`; 
 

 
var textToDelete = regex.exec(text)[1]; 
 
var result = text.replace(textToDelete, '\n'); 
 

 
console.log(result);