Michał Lach
Michał Lach

Reputation: 1278

Convert string in javascript with regular expression

I am working with REST API that returns the following string:

Lorem ipsum {@someAttribute Attribute1} ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod {@isTrue false} Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

The basic idea is to take strings like:

{@someAttribute Attribute1}

or:

{@isTrue false}

and get rid of the thinks like {} and @someAttribute, @isTrue so that the finall string would look like this:

Lorem ipsum Attribute1 ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod false Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

I know, that there is replace() method in Javascript, but my knowledge is very limited in regular expressions. Any help ?

Upvotes: 1

Views: 85

Answers (3)

Danilo Valente
Danilo Valente

Reputation: 11342

Try this code:

var str = 'Lorem ipsum {@someAttribute Attribute1} ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod {@isTrue false} Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
var output = str.replace(/\{[^}]*\}/g, function (m) {
    return m.slice(0, -1).replace(/^\{@\w*\s/g, '');
});

Upvotes: 1

anubhava
anubhava

Reputation: 785128

If { and } are balanced then this should work:

var repl = s.replace(/\{@\S+\s+([^}]+)\}/g, '$1');

OUTPUT

Lorem ipsum Attribute1 ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod false Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Upvotes: 3

Tom McQuarrie
Tom McQuarrie

Reputation: 1147

txt.replace( /\{\@\w+ (.*?)\}/gi, '$1' );

Upvotes: 2

Related Questions