I'm trying to figure out a regex which yields any string between single quotes ('), IF that string contains a given word.
For example, assume I have the following text, and I want to match everything between single quotes that contains the word "test":
Some sample text,
'this is test a match' and
'this is not a match' but
'this is a match again because it contains the word test'.
This "is not a test match because its double quotes".
And this is not a test match either because this is not encapsulated in quotes.
The regex would need to return two matches, namely
"this is a test match"
"this is a match again because it contains the word test"
I'm a bit lost here. I tried text.match( /'(.*?)'/); to return everything between single quotes, and then subsequently have a function check for a substring match. But oddly that regex didn't even seem to return all strings within single quotes property.
Would greatly appreciate a pointer.. thanks!
Your regex is correct except you want to match all occurance so use g
for global search for all matches:
text.match(/'(.*?)'/g)
and to match for exact word:
text.match(/'(.*?test.*?)'/g)
You can allow it to be generic for any word by formulate the Regualr Expression using:
word = 'test'
text.match(RegExp("'(.*?"+word+".*?)'", 'g'))
I just fooled around with your example on RegexPal and figured out following expression: '(.*)test(.*)'
This also works
/\'.*(test).*\'/g
https://regex101.com/r/bD6zF0/1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With