2

如何确定字符串是否包含数组中的一个值?

例如:

var a = ["abc","def","ghi"];

var s = "jskljfdkljflkjk abc jskfdjklsj";


for(var i=0;i<a.length;i++){
    if(/a[i]/.test(s)) alert(1);
}

这显然不起作用......我知道这很有可能虽然哈哈哈

4

4 回答 4

3

您创建正则表达式的语法不正确。该正则表达式只会对字符串“ai”返回 true。您正在针对数组测试正则表达式。我想你要写的是:

if(RegExp(a[i]).test(s)) alert(1);

在这种情况下,您最好只使用 indexOf 。它会更快,您不需要转义任何字符。

var a = ["abc","def","ghi"],
    s = "jskljfdkljflkjk abc jskfdjklsj";

for(var i = 0, l = a.length; i < l; i++)
    if(s.indexOf(a[i])+1) alert('string s contains a value from array a');
于 2013-05-24T14:36:03.053 回答
1

您可以使用 JavaScript 的搜索方法

var a = ["abc","def","ghi"];

var s  = "jskljfdkljflkjk abc jskfdjklsj";

for(var i=0;i<a.length;i++){

  if(s.search( a[i] ) != -1)
  {
     alert("found");
  }
}
于 2013-05-24T14:39:38.970 回答
1
function doesStringContainElementFromArray(str, arr)
{
  for ( var i=0; i<arr.length; i++)
  {
    if ( str.indexOf(arr[i]) != -1 )
      return true;
  }
  return false;
}
于 2013-05-24T14:33:21.707 回答
1

只需使用“RegExp”函数/构造函数(如果你真的需要正则表达式)

if (RegExp(a[i]).test(a)) {
  alert(1);
}

如果你不这样做,只需使用.indexOf

if (s.indexOf(a[i]) != -1) {
  alert("a[i]="+a[i]+" is matched in " + s);
}
于 2013-05-24T14:33:24.567 回答