我有以下小提琴:
功能:
$('#testbutton').on("click", function(){
test();
});
function test()
{
var data = [];
data['article'] = "monablanko";
data['specialarticle'] = ["blanko", "bbsooel"];
var tmp = data['specialarticle'].join("|");
if( data['article'].match( /(tmp)/ ) )
{
$('#result').html("I found a match");
}
else
{
$('#result').html("I didn't found a match");
}
}
我没有找到与此功能匹配的内容。我的错误在哪里?当我使用
时,tmp的类型是字符串console.log(typeof tmp);
当我写
if( data['article'].match( /(blanko|bbsooel)/ ) )
然后我找到一个匹配。
答案 0 :(得分:5)
您与字符串文字"tmp"
匹配,而不是与变量tmp
中包含的值匹配。试试这样:
data['article'].match( new RegExp("(" + tmp + ")") )
答案 1 :(得分:1)
您需要创建一个RegExp以匹配您的字符串:
$('#testbutton').on("click", function(){
test();
});
function test(){
var data = [];
data['article'] = "monablanko";
data['specialarticle'] = ["blanko", "bbsooel"];
var tmp = new RegExp('('+data['specialarticle'].join("|")+')');
if( data['article'].match( tmp ) )
{
$('#result').html("I found a match");
}
else
{
$('#result').html("I didn't found a match");
}
}
还有一个提示:如果您不需要收集匹配项,但只是为了测试字符串是否包含RegExp我建议使用test
代替match
:< / p>
tmp.test(data['article']);
而不是
data['article'].match(tmp);