2016-11-28 4 views
0

В настоящее время я должен соответствовать пользовательскому вводу с существующим значением, и я использовал,Использование .match() для случая нечувствительных слов

return book.id.match(keyword); 

Теперь мне нужно сделать матч ключевого слова чувствителен к регистру, где Bookt и Например, BOOkT также должен соответствовать. Я попытался использовать регулярное выражение, но это не позволяет мне передать переменную «keyword» в regex. Любая идея, как это сделать просто?

+6

'.match (новый RegExp (ключевое слово, 'i'))' при условии, что в ключевом слове нет специальных символов. – Tushar

+1

'book.id.toLowerCase() включает (keyword.toLowerCase())' – Bergi

ответ

0

Вы можете использовать совпадение с регулярным выражением как параметры.

var string = "BoOkt"; 
var result = string.match(/bookt/i); 

if (result){ 
    alert('match'); 
} 

альтернативный вариант с использованием регулярных выражений является indexOf. Если у вас есть метасимволы регулярного выражения с вашего пользовательского ввода и использование match будет для вас еще одной проблемой.

var match = 'awesome'; 
var string = 'stackoverflow is AweSoMe place'; 

if (string.toLowerCase().indexOf(match) != -1){ 
    alert('match') 
} 
+0

Обратите внимание, что код OP не отображает контекста; если массив, возвращаемый '.match()' используется для чего-то, то переключение на '.indexOf()' не будет работать. – nnnnnn

Смежные вопросы