0

I looked a lot, but i couldn't find answer to my case. So I want to remove specific character unless it is preceded by some specific string. For example, if I have a paragraph like follows

var para = '<test@gmail.com>
  >Lorem ipsum dolor sit amet,<test@gmail.com> consectetur
  >adipiscing elit. Integer nec >
  >odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla 
  >quis sem at nibh elementum imperdiet.Duis sagittis ipsum. Praesent 
  >mauris. Fusce nec tellus sed augue semper porta. Mauris massa. 
  >Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu. 
  <test@gmail.com> '

I wanna remove all '>' except the ones after the '.com'

output should be like

var para = '<test@gmail.com>
   Lorem ipsum dolor sit amet,<test@gmail.com> consectetur
   adipiscing elit. Integer nec 
   odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla 
   quis sem at nibh elementum imperdiet.Duis sagittis ipsum. Praesent 
   mauris. Fusce nec tellus sed augue semper porta. Mauris massa. 
   Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu. 
  <test@gmail.com> '

I know if i do

para = para.replace(/\>/g,'');

This will replace all '>', but I need to add that condition to it.

Thm Lee
  • 1,236
  • 1
  • 9
  • 12
Amer Bearat
  • 876
  • 2
  • 7
  • 25

2 Answers2

3

[^m]> Should do the work.

See the demo in regex101

Explanation: [^m]> says that should match every > which is not preceded by a m character.

Rodrigo Ferreira
  • 1,091
  • 8
  • 11
3

To remove all '>' except the ones after the '.com', use negative lookbehind

para = para.replace(/(?<!\.com)>/g,'');
Matt.G
  • 3,586
  • 2
  • 10
  • 23