如何使用正则表达式和用户输入变量

如何使用正则表达式和用户输入变量

问题描述:

我得到一个使用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

您正在测试文字字符串 - 该字符串是由用户传入的,但它仍然是文字,而不是正则表达式。

所以,你应该尝试:

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

如果给定的输入搜索字符串中这将成为过去。