Reputation: 24322
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
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
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
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
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
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
Reputation: 207861
var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);
Upvotes: 21
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