Skip to content

Encountered undefined value during string replacement and weird behaviour #90

Open
@Nenrei

Description

@Nenrei

I have this string:
let text = "{form 1} {form 2} {form 1:3}";

and this regexp:
/{form (\d+(:\d+)?)}/g
that should match {form x} and {form x:y}

I am executing:

text = reactStringReplace(text, /{form (\d+(:\d+)?)}/g, (match, i) => { return 'match: ${match}, i: ${i}'; });

then in the return of my component I have this:

    return (
        <div className={"cfs-dove__thread-content-message"}>
            {replacedText &&
                replacedText.map((el, i) => {
                    return (
                        <p key={`lettercontent${i}`} dangerouslySetInnerHTML={{ __html: el }}></p>
                    );
                })}
        </div>
    );

and this is de output:

<div class="cfs-dove__thread-content-message">

  <p>match: 1, i: 1</p>

  <p>2</p>

  <p>match: 1:3, i: 7</p>

  <p>:3</p>

  <p>match: , i: 9</p>

</div>

As you can see, the first and third <p> are fine. But the rest aren`t.
The second is the matched value of {form 2} but didn't enter in the replace function.
The forth is only part of the matched value of {form 1:3} and also didn't enter in the function.
And the last did enters in the replace function but the match is "";

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions