0

Suppose I have following string..

string = 'bla bla bla data-id="34232" bla bla bla bla data-id="457667" bla bla bla bla bla bla data-id="45454" bla bla'

i need to replace into following string..

string = 'bla bla bla <div data-id="34232"></div> bla bla bla bla <div data-id="457667"></div> bla bla bla bla bla bla <div data-id="45454"></div> bla bla'

I was doing this..

string.match(/data-id="(.*?)"/g);
// ["data-id="34232"", "data-id="457667"", "data-id="45454""]

after that, I don't have idea how to accomplish this...

thank You for any help..

1
  • string.replace(/that/, '<div data-id="$1"></div>'); Commented May 23, 2016 at 9:33

4 Answers 4

2

Use replace() to perform string replacement and use $& which helps to inserts the matched substring in replacement string.

var str = 'bla bla bla data-id="34232" bla bla bla bla data-id="457667" bla bla bla bla bla bla data-id="45454" bla bla';

console.log(
  str.replace(/data-id=".*?"/g, '<div $&></div>')
)

Sign up to request clarification or add additional context in comments.

Comments

0

try this (using split and minor modification to your regex)

string = string.split(/(data-id=".*?)"/).map(function(val, index){ if ( index % 2== 1 ){ val = "<div " + val + "></div>" } return val; }).join("");

DEMO

var string = 'bla bla bla data-id="34232" bla bla bla bla data-id="457667" bla bla bla bla bla bla data-id="45454" bla bla'
string = string.split(/(data-id=".*?)"/).map(function(val, index){ if ( index % 2== 1 ){ val = "<div " + val + "></div>" } return val; }).join("");
alert(string);

Comments

0

The solution using String.replace function(with "replacer" function):

var str = 'bla bla bla data-id="34232" bla bla bla bla data-id="457667" bla bla bla bla bla bla data-id="45454" bla bla',
    wrapped = str.replace(/data-id=\"[^"]+\"/g, function(m){
        return "<div " + m + "></div>";
    });

console.log(wrapped);
// "bla bla bla <div data-id="34232"></div> bla bla bla bla <div data-id="457667"></div> bla bla bla bla bla bla <div data-id="45454"></div> bla bla"

Comments

0

Look at this Regex Demo.

You can capture the data-id= as well along with the value inside it and use it in the replacement.

var s = 'bla bla bla data-id="34232" bla bla bla bla data-id="457667" bla bla bla bla bla bla data-id="45454" bla bla'
console.log(s.replace(/(data-id="\d+")/g, '<div $1></div>'));

// "bla bla bla <div data-id="34232"></div> bla bla bla bla <div data-id="457667"></div> bla bla bla bla bla bla <div data-id="45454"></div> bla bla"

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.