js regexp在csv中搜索

时间:2011-12-17 15:18:37

标签: javascript regex csv

Hy,我有一个很长的csv,我想搜索包含某些单词的字符串,例如:

var str = "Dan Jobsy,Google Analitis,ejobs";

我发现了这个:

(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)

将解析CSV并返回单词,我想知道如何扩展它并添加一个条件只返回包含某个字符串的csv中的单词?就像我搜索“oo”一样,它只返回“Google Analitics”,但如果我搜索“job”,它将返回“Dan Jobsy”和“ejobs”

修改

这里没有找到解决方案,除了使用我提供的正则表达式的解决方案,如果我可以自己设法解决这个问题,我会在这里发布ans。

3 个答案:

答案 0 :(得分:0)

String.search(pattern):

将RegExp与string匹配,如果找到则返回匹配开头的索引,否则返回-1。

但要获得正则表达式,您需要学习一些正则表达式模式。你可以开始here或google搜索javascript regexp教程

答案 1 :(得分:0)

var str     = "Dan Jobsy,Google Analitis,ejobs";

var needle  = "job";
var matches = [];

for (i in A = str.match (/(\"(?:[^\"]+|\"\")*\"|[^,]+)(?=$|,)/g)) {
  if (A[i].toLowerCase().indexOf (needle.toLowerCase ()) != -1)
    matches.push (A[i]);
}

console.log (matches);

输出

[ 'Dan Jobsy', 'ejobs' ]

答案 2 :(得分:0)

要使用分隔符拆分javascript字符串,请使用string.split(str或regex);

所以:

var str = "Dan Jobsy,Google Analitis,ejobs";
var ary_names = str.split(','), i = 0, ary_len = array.length, count = 0;
for (i = 0; i < ary_len; i++){
  if (ary_names[i].match(/jobs/i)){ count++; }
}
// count is the # of times jobs was found.

从那里你可以使用循环,indexOf,包含框架等来对数组进行搜索。