首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JS正则表达式解析航空公司预订

使用JS正则表达式解析航空公司预订
EN

Code Review用户
提问于 2018-01-09 13:28:00
回答 1查看 83关注 0票数 2

我正在搜索一个集文本,以获得多个值,这些值稍后将存储在数据库中。

我正在使用RegExp,并与正式的文档帮助一起工作,使代码成为两个单独的while循环。问题是,是否有可能将它们合并成一个,添加越来越多的正则表达式,或者它们是否需要各自的for-循环。

代码语言:javascript
复制
const regex = /PREPARED FOR([^]*?)RESERVATION/g;
const regex2 = /AIRLINE RESERVATION CODE (.*)/g;

const str = `30 OCT 2017  04 NOV 2017
Distance (in Miles):500
Stop(s): 0
Distance (in Miles):500
Stop(s):0
TRIP TO KRAKOW, POLAND
PREPARED FOR
DOE/JANE MRS 
APPLESEED/JOHN MR 
RESERVATION CODE   UVWXYZ
AIRLINE RESERVATION CODE DING67 (OS)
AIRLINE RESERVATION CODE HDY75S (OS)`;
let m;
let x;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    console.log(m[1])

}

while ((x = regex2.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (x.index === regex2.lastIndex) {
        regex2.lastIndex++;
    }
    console.log(x[1])

}
console.log("We're done here")

现在,这是非常好的工作,但我将添加更多的过滤器和搜索到它,这意味着我可能得到总共8-9,而循环,这可能会减慢进程,或是低效的。

EN

回答 1

Code Review用户

回答已采纳

发布于 2018-01-09 14:09:49

您不需要一个循环,您可以使用字符串的match方法,但是为了只获得匹配的组,您必须使用一个查找(javascript的regex实现不支持),但是,它确实支持提前查找,所以基本上,您可以反转它,反转所有匹配,并过滤掉空字符串来获取预订代码。由于名称只有一个匹配项,因此也不需要循环,假设始终有匹配项,所以只需使用exec并将结果从末尾弹出。

代码语言:javascript
复制
const str = `30 OCT 2017  04 NOV 2017
    Distance (in Miles):500
    Stop(s): 0
    Distance (in Miles):500
    Stop(s):0
    TRIP TO KRAKOW, POLAND
    PREPARED FOR
    DOE/JANE MRS 
    APPLESEED/JOHN MR 
    RESERVATION CODE   UVWXYZ
    AIRLINE RESERVATION CODE DING67 (OS)
    AIRLINE RESERVATION CODE HDY75S (OS)`;

var r1 = / (.*)(?= EDOC NOITAVRESER ENILRIA)/g,
    r2 = /PREPARED FOR([^]*?)RESERVATION/g;

const rev = s=>s.split('').reverse().join('').trim();

let x = r2.exec(str).pop();
let m = rev(str).match(r1).map(rev).filter(w=>w.length);

console.log(x);
console.log(m);
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/184653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档