JS Regex:在单引号之间匹配字符串中的单词

时间:2015-08-30 13:13:39

标签: javascript regex

我正在试图找出一个正则表达式,它在单引号(')之间产生任何字符串,如果该字符串包含给定的单词。

例如,假设我有以下文本,并且我希望匹配包含单词“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.

正则表达式需要返回两个匹配项,即

"this is a test match"
"this is a match again because it contains the word test"
我在这里有点失落。我试过text.match(/'(.*?)'/);返回单引号之间的所有内容,然后对子字符串匹配进行函数检查。但奇怪的是,正则表达式似乎甚至没有在单引号属性中返回所有字符串。

非常感谢指针..谢谢!

3 个答案:

答案 0 :(得分:5)

你的正则表达式是正确的,除非你想匹配所有出现,所以使用g全局搜索所有匹配:

 text.match(/'(.*?)'/g)

并匹配确切的字词:

 text.match(/'(.*?test.*?)'/g)

通过使用以下方法制定Regualr Expression,您可以允许它对任何单词都是通用的。

word = 'test'
text.match(RegExp("'(.*?"+word+".*?)'", 'g'))

答案 1 :(得分:1)

我只是在RegexPal上愚弄了你的例子并找出了以下表达式:'(.*)test(.*)'

答案 2 :(得分:1)

这也有效

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

Cordova File API Documentation