2013-04-05 80 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'); 
} 

此代码不能正常工作。这个目的是什么?

我想知道如何使用正则表达式来完成。

+0

首先,变量一般不应该以美元标志开始,那就是PHP,并且最好是JS中的jQuery对象。其次,凯文有答案! – adeneo 2013-04-05 21:07:28

+0

当我点击关闭时,我选择了错误的重复,我的评论中的一个更准确。 – 2013-04-05 21:08:35

+0

@Kevin我还没有找到该主题的正确解决方案。 – Mark 2013-04-05 21:09:16

回答

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

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

更一般地说,您只需要将参数连接为新的RegExp对象中的字符串。根据变量中的内容,您可能需要首先将它们转义 - 但StackOverflow中有足够的位置来查找正则表达式转义建议。

+1

原始示例没有任何正则表达式修饰符。 – VNO 2013-04-05 21:15:48

+0

@Vibhu右边,这段代码长度更大。它可以缩短吗? – Mark 2013-04-05 21:17:18

+0

恩,当然。如果需要,可以将所有内容放在'if'语句中。 – VNO 2013-04-05 21:18:11