Anoop
Anoop

Reputation: 23208

How to read all string inside parentheses using regex

I wanted to get all strings inside a parentheses pair. for example, after applying regex on

"fun('xyz'); fun('abcd'); fun('abcd.ef') { temp('no'); " 

output should be

['xyz','abcd', 'abcd.ef'].

I tried many option but was not able to get desired result. one option is
/fun\((.*?)\)/gi.exec("fun('xyz'); fun('abcd'); fun('abcd.ef')").

Upvotes: 0

Views: 351

Answers (3)

micnic
micnic

Reputation: 11275

The easiest way to find what you need is to use this RegExp: /[\w.]+(?=')/g

var string = "fun('xyz'); fun('abcd'); fun('abcd.ef')";
string.match(/[\w.]+(?=')/g); // ['xyz','abcd', 'abcd.ef']

It will work with alphanumeric characters and point, you will need to change [\w.]+ to add more symbols.

Upvotes: 0

HeM01
HeM01

Reputation: 111

You can use this code will almost do the job:

"fun('xyz'); fun('abcd'); fun('abcd.ef')".match(/'.*?'/gi);

You'll get ["'xyz'", "'abcd'", "'abcd.ef'"] which contains extra ' around the string.

Upvotes: 0

user1106925
user1106925

Reputation:

Store the regex in a variable, and run it in a loop...

var re = /fun\((.*?)\)/gi,
    string = "fun('xyz'); fun('abcd'); fun('abcd.ef')",
    matches = [],
    match;

while(match = re.exec(string))
    matches.push(match[1]);

Note that this only works for global regex. If you omit the g, you'll have an infinite loop.

Also note that it'll give an undesired result if there a ) between the quotation marks.

Upvotes: 1

Related Questions