简体   繁体   中英

JS Regex: Match word in a string between single quotes

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'))

我只是骗你的RegexPal上的例子并想出以下表达式: '(.*)test(.*)'

This also works

/\\'.*(test).*\\'/g

https://regex101.com/r/bD6zF0/1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM