react-string-replace icon indicating copy to clipboard operation
react-string-replace copied to clipboard

Multiple replacements in a string are not working properly

Open pavel-mailpoet opened this issue 4 years ago • 2 comments

I am using react-string-replace for translations. I have a string and I want to replace a couple of substitutes. The code looks like this:

ReactStringReplace(
    '[link]This is my link[/link] available everywhere or [shortcode].',
    /(\[link\].*\[\/link\])|(\[shortcode\])/g,
    (match) => {
      console.log('match', match);
    }
  )

From my understanding, my regular expression should match only the first link and the [shortcode]. But the result in the console looks like this:

match [link]This is my link[/link]
match  available everywhere or 
match [shortcode]

I don't understand why is the middle match there. It doesn't match the regular expression.

pavel-mailpoet avatar Jan 28 '20 09:01 pavel-mailpoet

It seems like the library only accepts one group on the passed regex. Try it with /(\[link\].*\[\/link\]|\[shortcode\])/g

The output now should be: match [link]This is my link[/link] match [shortcode]

mikelpmc avatar Jan 28 '20 17:01 mikelpmc

this totally took my off-balance, shouldn't this be part of the README.md page? :)

I can do the PR if you feel like this is relevant information for anyone who wants to use the library.

nahumzs avatar Oct 10 '20 23:10 nahumzs