如何使用.search()方法在字符串中搜索多个变量

时间:2014-09-15 13:55:51

标签: javascript

我提供了这个解决方案:How do you search multiple strings with the .search() Method?

但我需要使用多个变量进行搜索,例如:

var String = 'Hire freelance programmers, web developers, designers, writers, data entry & more';
var keyword1 = 'freelance';
var keyword2 = 'web';
String.search(/keyword1|keyword2/);

3 个答案:

答案 0 :(得分:3)

您可以使用RegExp constructor而不是文字组成正则表达式。

String.search(new RegExp(keyword1+'|'+keyword2));

答案 1 :(得分:1)

在正则表达式中使用它们之前,您想要转义字符串(除非您某些它们永远不会包含任何[,{ {1}}等等,然后构建一个|对象:

RegExp

如果您有一系列搜索字词,可以概括一下:

function escapeRegExp(string){
  return string.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1");
}

var re = new RegExp( escapeRegExp(keyword1) + "|" + escapeRegExp(keyword2) );
String.search(re);

答案 2 :(得分:0)

search只返回第一场比赛的索引,不再搜索。如果您想查找所有关键字的索引,可以使用exec代替:

var myRe = new RegExp(keyword1 + '|' + keyword2, 'g')
var myArray;
while ((myArray = myRe.exec(str)) !== null) {
  var msg = "Found " + myArray[0] + " at position " + myArray.index;
  console.log(msg);
}

<强>输出

在第5位找到自由职业者

在第28位找到网站

DEMO