2016-06-07 74 views
0

我得到一個使用JSON的對象數組,然後我的目標是讓用戶搜索特定的登錄名。爲此,我希望他們能夠鍵入一個字母並檢查每個對象的登錄名,如果該字母包含我想要顯示它。 爲了實現這一點,我在下面的代碼工作:如何使用正則表達式和用戶輸入變量

var i; 
var out=""; 
var exp=/d/g; 
var result = " "; 
for(i=0;i<users.length;i++){ 
    result= exp.test(users[i].login); 
    if(result){ 
    out+= users[i].login+ " "; 
    } 

} 

,如果我寫的正則表達式(在這種情況下d)它工作正常,但一旦我嘗試把一個變量正則表達式,它不會裏面工作。我如何創建一個正則表達式,將用戶輸入和測試函數一起執行相同的任務?或者idk是否有更好的/更優雅的解決方案。我知道已經有了不同的正則表達式問題,但我沒有找到幫助我的人。

感謝幫助!

+3

確定你想要一個正則表達式,當你所描述的聽起來更像'if(users [i] .login.indexOf(userInput)> -1)' –

+0

'var variable ='d';新的RegExp(變量,'g');'(把它作爲*註釋,*,因爲我相信尼提提供了*答案*) –

+0

我相信你是正確的尼。我是JavaScript新手,發現了indexOf,但我不確定是否可以使用它,所以我採用了正則表達式的方法。感謝你的回答! – jmor

回答

0

您正在測試文字字符串 - 該字符串是由用戶傳入的,但它仍然是文字,而不是正則表達式。

所以,你應該嘗試:

if(users[i].login.indexOf(userInput) > -1) 

如果給定的輸入搜索字符串中這將成爲過去。