JS: vCard parser
more at: https://github.com/comoyo/vcfparser https://github.com/nilclass/vcardjs https://github.com/muff/vCard.js
by Arvind Pal
HTML
<pre>BEGIN:VCARD
VERSION:2.1
N:Albert;Yannick;;
FN:Yannick Albert
ORG:ARTsinn
TITLE:CEO
TEL;CELL;VOICE:+49 1525 1333833
ADR;WORK:;;Fockstr. 31;Kiel;SH;24114;Deutschland
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:ARTsinn=0D=0A=
Yannick Albert=0D=0A=
Fockstr. 31=0D=0A=
24114 Kiel, SH, Deutschland
ADR;HOME:;Fockstr. 31;;Kiel;SH;24114;Deutschland
LABEL;HOME;ENCODING=QUOTED-PRINTABLE: Yannick Albert=0D=0A=
Fockstr. 31=0D=0A=
24114 Kiel, SH, Deutschland
X-WAB-GENDER:2
URL;HOME:http://yckart.com/
URL;WORK:http://artsinn.de/
BDAY:19911008
EMAIL;PREF;INTERNET:[email protected]
REV:20130619T014947Z
END:VCARD</pre>
JavaScript
function parse(input) {
var Re1 = /^(version|fn|title|org):(.+)$/i;
var Re2 = /^([^:;]+);([^:]+):(.+)$/;
var ReKey = /item\d{1,2}\./;
var fields = {};
input.split(/\r\n|\r|\n/).forEach(function (line) {
var results, key;
if (Re1.test(line)) {
results = line.match(Re1);
key = results[1].toLowerCase();
fields[key] = results[2];
} else if (Re2.test(line)) {
results = line.match(Re2);
key = results[1].replace(ReKey, '').toLowerCase();
var meta = {};
results[2].split(';')
.map(function (p, i) {
var match = p.match(/([a-z]+)=(.*)/i);
if (match) {
return [match[1], match[2]];
} else {
return ["TYPE" + (i === 0 ? "" : i), p];
}
})
.forEach(function (p) {
meta[p[0]] = p[1];
});
if (!fields[key]) fields[key] = [];
fields[key].push({
meta: meta,
value: results[3].split(';')
})
}
});
return fields;
};
var str ="BEGIN:VCARD\nVERSION:3.0\nFN:Jagga Daaku\nN:Daaku;Jagga;;;\nNICKNAME:Jaggu\nX-PHONETIC-FIRST-NAME:Daaku\nX-PHONETIC-MIDDLE-NAME:Jaggga\nX-PHONETIC-LAST-NAME:Singh\nEMAIL;TYPE=INTERNET;TYPE=HOME:jagga.daaku@gmail com\nEMAIL;TYPE=INTERNET;TYPE=WORK:[email protected]\nTEL;TYPE=CELL:98186 41292\nTEL;TYPE=WORK:0129 223 3445\nTEL;TYPE=HOME:+91 88888 88888\nADR;TYPE=HOME:;;H.No - 1\, Sec - 1;Noida;;;\nADR;TYPE=WORK:asdasdasdsad;Sec - 1;A1;Noida;Uttar Pradesh;201301;IN\nADR;TYPE=HOME:asdasdsada;Sector 1;B1;Noida;Uttar Pradesh;201301;IN\nitem1.ORG:Vella\nitem1.X-ABLabel:unknown\nitem2.TITLE:Engineer\nitem2.X-ABLabel:unknown\nBDAY:20100101\nURL:Jagga-Daaku.com\nitem3.X-ABRELATEDNAMES:Nalin Sajwan\nitem3.X-ABLabel:$!<Manager>!$\nNOTE:Vella Boy\nEND:VCARD"
console.log("-->", ...