2013-04-05 76 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