iansinnott / react-string-replace

A simple way to safely do string replacement with React components
MIT License
652 stars 56 forks source link

Multiple replacements in a string are not working properly #48

Open pavel-mailpoet opened 4 years ago

pavel-mailpoet commented 4 years ago

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.

mikelpmc commented 4 years ago

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]

nahumzs commented 4 years ago

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.