gpt4 book ai didi

javascript - Javascript 中的正则表达式 vcf

转载 作者:行者123 更新时间:2023-12-03 09:56:37 27 4
gpt4 key购买 nike

我有这个结构,我只想提取 FNTEL:

BEGIN:VCARD
VERSION:2.1
N:Pepe;Perez;;;
FN:Pepe Perez
TEL;HOME:+549465738283
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Jose;Perez;;;
FN:Jose Perez
TEL;CELL:+549465738284
END:VCARD

喜欢:

[
{name: 'Pepe perez', tel: '+549465738283'},
{name: 'Jose perez', tel: '+549465738284'}
]

我有这个代码:

var file = fs.readFileSync('app/vcards/00003.vcf', 'utf-8');

var p = new RegExp(/(^FN:)(.*)(\n)(TEL;)(.*:)(\+)([0-9]+)/g);

console.log(p.exec(file));

但结果是null

有人帮助我吗?

最佳答案

这并不是真正的正则表达式,但根据要求,这里有一种手动解析 vCard 的方法,因为我相信这是最容易跟踪和修改的

var file = fs.readFileSync('app/vcards/00003.vcf', 'utf-8');
var arr = [];
var obj = {};

file.split("\n").forEach(function(line) {
if ( line.indexOf('FN') === 0 ) {
obj.name = line.split(':').pop().trim();
} else if ( line.indexOf('TEL') === 0 ) {
obj.tel = line.replace(/[^0-9+]/g,'');
arr.push(obj);
} else if ( line.indexOf('END') === 0 ) {
obj = {};
}
});

var file = document.getElementById('test').innerHTML.trim();
var arr = [];
var obj = {};

file.split("\n").forEach(function(line) {
if ( line.indexOf('FN') === 0 ) {
obj.name = line.split(':').pop().trim();
} else if ( line.indexOf('TEL') === 0 ) {
obj.tel = line.replace(/[^0-9+]/g,'');
arr.push(obj);
} else if ( line.indexOf('END') === 0 ) {
obj = {};
}
});

document.body.innerHTML = '<pre>' + JSON.stringify(arr, null, 4) + '</pre>';
<div id="test">
BEGIN:VCARD
VERSION:2.1
N:Pepe;Perez;;;
FN:Pepe Perez
TEL;HOME:+549465738283
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:Jose;Perez;;;
FN:Jose Perez
TEL;CELL:+549465738284
END:VCARD
</div>

还应该注意的是,也有可用的中间件

https://www.npmjs.com/package/vcard

它基本上做同样的事情,分割行并查找 BEGINEND 来获取每张卡片等。

关于javascript - Javascript 中的正则表达式 vcf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30720836/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com