2013-04-05 2 views
0

У меня есть регулярное выражение:Переменные в регулярном выражении

if (/(Name|Surname|City|Dog)/.test(names)) { 
    alert('true'); 
} 

Я хотел бы использовать переменные, а и передать его в регулярное выражение, как:

$name = 'Name'; 
$surname = 'Surname'; 
$city = 'City'; 
$dog = 'Dog'; 

if (/($name|$surname|$city|$dog)/.test(names)) { 
    alert('true'); 
} 

Этот код не работает. Что такое corrent для этой цели?

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

+0

Первым, переменные should'nt обычно начинаются с доллара, это PHP, и в лучшем случае объекты jQuery в JS. Во-вторых, у Кевина есть ответ! – adeneo

+0

Я выбрал неправильный дубликат, когда я щелкнул близко, то, что в моем комментарии более точно. –

+0

@Kevin Я не нашел правильного решения в этой теме. – Mark

ответ

3
var args = ['Name', 'Surname', 'City', 'Dog']; 
var regExp = new RegExp(args.join("|")); 

if (regExp.test(names)) { 
    alert('true'); 
} 

В общем, вам просто нужно объединить аргументы в виде строки внутри нового объекта RegExp. В зависимости от того, что находится в переменных, вам может понадобиться избежать их в первую очередь, но в StackOverflow есть достаточные места для поиска рекомендаций по ускоренному выражению.

+1

Исходный пример не имеет модификаторов регулярных выражений. – VNO

+0

@Vibhu right, этот код больше по длине. Может ли оно быть короче? – Mark

+0

Умм, конечно. Вы можете поместить все в 'if' заявление, если вам нужно. – VNO

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