$split() (jsonata) 函数中的正则表达式给出“正则表达式匹配零长度字符串”为什么?

我有一个如下所示的字符串文本,我想在出现新行并以日期 dd/mm/yyyy 开头时分割文本。


我在 javascript 中使用 jsonata $split() 函数。但是,我收到 jsonata 错误,如下所示“正则表达式匹配零长度字符串”。请帮助我如何解决这个问题。


text = "22/03/2012 intro 20/10/2019\n" + 

       "22/03/2012 body\n" + 

       "more body 22/04/2020\n" +

      "22/03/2012 stuff more stuff"



$split(text , /\\r?\\n(?=(?:0[1-9]|[12][0-9]|3[01])[- \\/.](?:0[1-9]|1[012])[- \\/.](?:19|20)\\d\\d)/))

//I want the output to be [ "22/03/2012 intro 20/10/2019",

//                           "22/03/2012 body more body 22/04/2020",

//                           "22/03/2012 stuff more stuff] 

// But my output now is [ "22/03/2012 intro 20/10/2019",

//                           "22/03/2012 body/n + more body 22/04/2020",

//                           "22/03/2012 stuff more stuff]          


湖上湖
浏览 100回答 2
2回答

至尊宝的传说

使用$split($replace(text, /(\r?\n)\s*\+\s*(?=\d{2}[- \/.]\d{2}[- \/.]\d{4})|\r?\n\s*\+\s*/g, '$1'), /\r?\n/)第一个$replace删除加号和换行符,并在必要时替换为行结尾。一种$split是用回车+换行或仅换行来分割。

慕娘9325324

const str = "22/03/2012 intro\n" +"22/03/2012 body\n" +"more body\n" +"22/03/2012 stuff\n" +"more stuff\n";console.log(str.match(/^[0-9][0-9][- /.][0-9][0-9][- /.][0-9][0-9][0-9][0-9][a-zA-Z\s]+(?:[a-zA-Z\s]+)/gm));// Will log ["22/03/2012 intro\n","22/03/2012 body\nmore body\n", "22/03/2012 stuff\nmore stuff\n"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript