Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find and replace string text between two other string texts JS

I'm trying to find and replace a word in a string

Example:

let string = 
`
Title: Hello World
Authors: Michael Dan
`

I need to find the Hellow World and replace with whatever I want, here is my attempt:

const replace = string.match(new RegExp("Title:" + "(.*)" + "Authors:")).replace("Test")
like image 434
Fillipo Avatar asked Sep 01 '26 08:09

Fillipo


1 Answers

When you replace some text, it is not necessary to run String#match or RegExp#exec explicitly, String#replace does it under the hood.

You can use

let string = "\nTitle: Hello World\nAuthors: Michael Dan\n"
console.log(string.replace(/(Title:).*(?=\nAuthors:)/g, '$1 Test'));

The pattern matches

  • (Title:) - Group 1: Title: fixed string
  • .* - the rest of the line, any zero or more chars other than line break chars, CR and LF (we need to consume this text in order to remove it)
  • (?=\nAuthors:) - a positive lookahead that matches a location that is immediately followed with an LF char and Authors: string.

See the regex demo.

If there can be a CRLF line ending in your string, you will need to replace (?=\nAuthors:) with (?=\r?\nAuthors:) or (?=(?:\r\n?|\n)Authors:).

like image 119
Wiktor Stribiżew Avatar answered Sep 03 '26 20:09

Wiktor Stribiżew