Vikas
Vikas

Reputation: 24322

Get text between two rounded brackets

How can I retrieve the word my from between the two rounded brackets in the following sentence using a regex in JavaScript?

"This is (my) simple text"

Upvotes: 70

Views: 104640

Answers (7)

Ryszard Czech
Ryszard Czech

Reputation: 18611

Use this to get text between closest ( and ):

const string = "This is (my) (simple (text)"
console.log( string.match(/\(([^()]*)\)/)[1] )
console.log( string.match(/\(([^()]*)\)/g).map(function($0) { return $0.substring(1,$0.length-1) }) )

Results: my and ["my","text"].

EXPLANATION

--------------------------------------------------------------------------------
  \(                       '('
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^()]*                   any character except: '(', ')' (0 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \)                       ')'

Upvotes: 8

Usman Shah
Usman Shah

Reputation: 51

to get fields from string formula.

var txt = "{{abctext/lsi)}} = {{abctext/lsi}} + {{adddddd}} / {{ttttttt}}";
re = /\{{(.*?)\}}/g;
console.log(txt.match(re));

Upvotes: 2

Ron
Ron

Reputation: 107

to return multiple items within rounded brackets

 var res2=str.split(/(|)/);

  var items=res2.filter((ele,i)=>{
  if(i%2!==0) {
  return ele;
  }
});

Upvotes: 0

Yu Mai Lin
Yu Mai Lin

Reputation: 91

For anyone looking to return multiple texts in multiple brackets

var testString = "(Charles) de (Gaulle), (Paris) [CDG]"
var reBrackets = /\((.*?)\)/g;
var listOfText = [];
var found;
while(found = reBrackets.exec(testString)) {
  listOfText.push(found[1]);
};

Upvotes: 9

Michael Krelin - hacker
Michael Krelin - hacker

Reputation: 143051

console.log(
  "This is (my) simple text".match(/\(([^)]+)\)/)[1]
);

\( being opening brace, ( — start of subexpression, [^)]+ — anything but closing parenthesis one or more times (you may want to replace + with *), ) — end of subexpression, \) — closing brace. The match() returns an array ["(my)","my"] from which the second element is extracted.

Upvotes: 135

j08691
j08691

Reputation: 207861

var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);​

jsFiddle example

Upvotes: 21

NedStarkOfWinterfell
NedStarkOfWinterfell

Reputation: 5153

You may also try a non-regex method (of course if there are multiple such brackets, it will eventually need looping, or regex)

init = txt.indexOf('(');
fin = txt.indexOf(')');
console.log(txt.substr(init+1,fin-init-1))

Upvotes: 17

Related Questions