2015-08-30 2 views
2

Я пытаюсь выяснить регулярное выражение, которое дает любую строку между одинарными кавычками ('), ЕСЛИ эта строка содержит данное слово.JS Regex: совместить слово в строке между одинарными кавычками

Например, предположим, что у меня есть следующий текст, и я хочу, чтобы соответствовать все одинарные кавычки, которые содержат слово «тест»:

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 (/'(.*?)'/); чтобы вернуть все между одинарными кавычками, а затем выполнить функцию проверки соответствия подстроки. Но странно, что регулярное выражение даже не возвращало все строки в свойство одиночных кавычек.

Буду очень признателен за указатель .. спасибо!

+0

пожалуйста форматировать встроенный код правильно, как так : '\' code \ '' –

ответ

1

Я просто дурачился с вашим примером на RegexPal и выяснил следующее выражение: '(.*)test(.*)'

+0

Это не работает для строк с несколькими фразами котировок: try '(. *?) test (. *?)' – ArcangelZith

3

Ваше регулярное выражение верно только вы хотите, чтобы соответствовать все это позволяет использовать g для общего поиска:

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

и соответствовать для точного слова:

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

Вы можете позволить ему быть универсальным для любого слова, сформулировать Regualr выражение с помощью:

word = 'test' 
text.match(RegExp("'(.*?"+word+".*?)'", 'g')) 
Смежные вопросы