2013-12-26 4 views
1

У меня есть JS строка, что agent.match(/(iphone|ipod|ipad)/) мне нужно, чтобы параметры соответствия динамическихнужно, чтобы получить правильный синтаксис яваскрипта с входными параметрами

Так я пытался идти, как тот agent.match('/(' + param + ')/'), но он не работает. Что бы я ни положил в param это совпадение.

Что я сделал не так? А что означает /?

ответ

2

Когда вы динамически генерируете строки RegEx, всегда лучше использовать конструктор RegExp. / на самом деле должен сказать JavaScript, что вы собираетесь использовать литерал регулярного выражения. Но когда вы помещаете эти внутренние кавычки, он становится частью строки.

Самый простой способ сделать это, чтобы поместить их в список, как этот

var data = ["iphone", "ipod", "ipad"]; 

И присоединиться к ним с | как этот

agent.match(new RegExp("(" + data.join("|") + ")")) 

Это работает, потому что,

data.join("|") 

будет производить

iphone|ipod|ipad 

Мы можем объединить ( и ) с этой строкой, чтобы динамически генерировать шаблон, который вы хотели.

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