javascript - 将文本文件输入的信息解析为 JSON 格式

标签 javascript regex filereader

我正在尝试用 JavaScript 解析文本输入文件。
我想首先将文件分成几个部分,然后通过添加以下代码片段来填写表单。
我正在尝试找到一种方法将输入分成 5 个部分;联系信息(姓名、电话、电子邮件)、目标、关键技能、工作经历和教育程度。
问题就在这里。我不是正则表达式专家。环顾网络,我找不到任何轻量级的 javaScript 库来帮助解决这个问题。查找诸如 name: 之类的关键字,然后匹配所有字符,直到遇到另一个关键字(例如 phone:),这是有意义的,但我不太知道如何处理这个问题。

function controller() {

function loadFromFile(event) {
    var fileInput = event.target.files[0];
    var textType = /txt.*/;

    if (fileInput.type.match(textType)) {
        var reader = new FileReader();
        reader.onload = function(evt) {
            console.log(evt.target.result);
        };
        reader.onerror = function(evt) {
            errorLogger('cannot_read_file', 'The file specified cannot be read ');
        };
        reader.readAsText(fileInput);
    } else {}
}
$(':input[type="file"]').change(loadFromFile);
};

姓名:John Doe
电话:(555) 555-5555
电子邮件:johndoe@example.com

OBJECTIVE  Excel in a web developer career.

KEY SKILLS Development: HTML5, JavaScript, Bootstrap, AngularJS, ReactJS, CSS3, Media Queries, 
Development Project Management: JIRA, Bitbucket, Confluence, Git, GitHub

EMPLOYMENT HISTORY 
Title: Junior Web Developer 
Company: Apple Inc.  
Dates: June 2015 to September 2016
* Developed responsive corporate websites
* Did some cool stuff
* Led team in closing out JIRA bugs

Title: Web Development Intern  
Company: Google Inc. 
Dates: January 2015 to May 2015
* Went on coffee runs for the team
* Team record for longest keg stand
* Once ate 82 cupcakes during a team building event

EDUCATION Degree: BBA  
School: Michigan State University 
GPA: 2.2 Major: 
Computer Science Minor: Drinking

最佳答案

只要输入始终具有相同的精确格式,此正则表达式就可以工作。

/姓名: ([a-zA-Z ]+)\n电话号码: (\(\d{3}\)\d{3}-\d{4})\n电子邮件: (.+ @.+)\n{2}目标 (.*)\n{2}关键技能 (.*)\n{2}工作经历 ((?:(?:(?:\W+|\s+|.* ))*))/g;

https://regex101.com/r/Q5OUFw/2

我不是最擅长使用 javascript,但这似乎会返回一个充满匹配项的数组。

let m;
let matches =[];

while ((m = regex.exec(str)) !== null)
{
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex)
    {
        regex.lastIndex++;
    }
    m.forEach((match, groupIndex) => { 
    matches.push(match);
    });
}

提供7场小组赛。

匹配[0] = 完全匹配

匹配[1] = 名称

匹配[2] = 电话号码

匹配[3] = 电子邮件

匹配[4] = 目标

匹配[5] = 技能

匹配[6] = 工作经历

关于javascript - 将文本文件输入的信息解析为 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40961925/

相关文章:

python - Python 正则表达式是否允许嵌入选项?

ios - 正则表达式卡在 iPhone 中用于电子邮件验证

javascript - 使用正则表达式匹配 8 或 9 位数字

angular - 将 Blob 转换为图像 url 并在图像 src 中使用以显示图像

javascript - 如何在回发后保持对 asp 文本框或任何 html 元素的关注

javascript - Google 可视化 Barformat 选项

javascript - Html5 filereader - 读取本地 Json Array 文件并仅显示特定部分

java - 处理 FileReader 和 subString

javascript - Vue.js 打印原始 html 并调用组件方法

javascript - 调用在变量中命名的 jQuery 方法