function lineNumberByIndex(index,string){
var line = 0,
match,
re = /(^)[\S\s]/gm;
while (match = re.exec(string)) {
if(match.index > index)
break;
line++;
}
return line;
}
,
function lineNumber(needle,haystack){
return lineNumberByIndex(haystack.indexOf(needle),haystack);
}
,
function lineNumbers(needle,haystack){
if(needle !== ""){
var i = 0,a=[],index=-1;
while((index=haystack.indexOf(needle, index+1)) != -1){
a.push(lineNumberByIndex(index,haystack));
}
return a;
}
}
Fiddle