2014-06-04 3 views
0

Я использую соответствие функции для поисковой системы, поэтому всякий раз, когда пользователь вводит строку поиска, я беру эту строку и использую функцию соответствия в массиве, содержащем названия стран, но это не выглядит работать.Передача параметра в соответствие функции

Например, если я:

var string = "algeria"; 
var res = string.match(/alge/g); //alge is what the user would have typed in the search bar 
alert(res); 

Я получаю строку res = "alge": //, таким образом, проверив, что ALGE существует в алжире

Но если я сделаю это, она возвращает нуль, то почему? и как я могу заставить его работать?

var regex = "/alge/g"; 
var string = "algeria"; 
var res = string.match(regex); 
alert(res); 

ответ

3

Чтобы сделать регулярное выражение из строки, вам нужно создать RegExp объект:

var regex = new RegExp("alge", "g"); 

(Помните, что если ваши пользователи не будут вводить фактические регулярные выражения, вам нужно избежать любой символы, которые имеют особое значение в рамках регулярных выражений - см Is there a RegExp.escape function in Javascript? способов сделать это)

+0

Был просто набрав то же самое. В исходном post var regex = "/ alph/g" является строкой, а не регулярным выражением :) – PeteAUK

0

Вам не нужны кавычки регулярного выражения:

.
0

Удалить цитаты вокруг регулярного выражения.

   var regex = /alge/g; 
       var string = "algeria"; 
       var res = string.match(regex); 
       alert(res); 
0

нашел ответ, функцию матча принимает объект регулярного выражения, так что нужно сделать

   var regex = new RegExp(string, "g"); 
      var res = text.match(regex); 

Это прекрасно работает

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