从长字符串中过滤数据

时间:2015-08-04 09:59:24

标签: javascript jquery regex string substring

我是以多种方式从QR码(VCARDS)扫描数据。这些是接收数据的不同选项:

选项1:

BEGIN:VCARD
VERSION:2.1
N:Lastname;Firstname
FN:Firstname Lastname
ORG:Lol Group
TITLE:Project Engineer
TEL;WORK:+32 (0)11 12 13 14
ADR;WORK:Industrielaan 1;2250 Olen;Belgium
EMAIL:link.com
URL:http://www.link.com
END:VCARD

选项2:

BEGIN:VCARDFN:Barend VercauterenTEL:+32(0)9 329 93 06EMAIL:Barend.Vercauterenëesc.beURL:http://www.esc.beN:Vercauteren;BarendADR:Grote Steenweg 39;9840;De PinteORG:ESC bvbaROLE:sales consultantVERSION:3.0END:VCARD

选项3:

BEGIN:VCARDVERSION:2.1N:Deblieck;Tommy;;DhrFN:Tommy DeblieckTITLE:ZaakvoerderORG:QBMT bvbaADR:;;Kleine Pathoekweg 44;Brugge;West-Vlaanderen;8000;Belgi≠A0171TEL;WORK;PREF:+32 479302972TEL;CELL:+32 479302972EMAIL:tdëqbmt.beURL:www.qbis.beEND:VCARD

正如您所看到的那样,所有文本都相互依附......

我需要一些数据来自动填写表单(我在jQuery中这样做)。我需要名字,姓氏,组织和电话号码。

所以我需要N,ORG和TEL之后的数据。我已经有了一种方法来接收带有选项1的数据。但是当文本全部相互连接时却没有。

我使用选项1接收正确数据的代码:

var fname = /FN:(.*)/g;
var org = /ORG:(.*)/g;
var tel = /TEL;[^:]*:(.*)/g;

var fullname, firstname, morg, mtel;

fullname = fname.exec(qr_data);
fullname = fullname[1];
var array = fullname.split(' ');
firstname = array[0];
array.shift();

var lastname = '';

if(array.length > 1){
    $.each(array, function(index, item) {
        lastname += item ;
    });
}
else
{
    lastname = array[0];
}

morg = org.exec(qr_data);
mtel = tel.exec(qr_data);

if(firstname)
{
    $("#firstname").val(firstname);
}

if(lastname)
{
    $("#name").val(lastname);
}

if(morg)
{
    $("#company").val(morg[1]);
}

if(mtel)
{
    $("#number").val(mtel[1]);
}

但是如何使用其他2个选项获取这些数据?

0 个答案:

没有答案