提问者:小点点

如何在包含文本的字符串中获取日期?


我有一个功能来比较插入的数据与图像内的原始数据,我们使用谷歌视觉OCR来提取文本。

OCR将为您提供每个块的结果

所以它会给你一个数组结果

const result = [
  {
    text: This is the first block
  },
  {
    text: This is the second block
  },
  {
    text: Created on 20 September 2021
  },
]

我的问题是,我怎样才能得到日期(2021年9月20日)?所以我可以对插入的数据进行比较。

我对循环和正则表达式做了一些逻辑分析,但我仍然无法完成,因为我仍然需要了解正则表达式,我花了一天的时间来学习这个正则表达式。

我只是想,需要比较的图像在日期上并不一致。

也许我会找到日期只有区块(没有任何文字,它只是显示日期),< BR>或日期是分开的空间(2021年9月20日),
或日期是分开的短跑(20月9日-2021),
或日期是分开的斜线(20 /九月/ 2021),
或日期月使用数字(20-092021)。

重要的是,日期结构并不总是相同的。
在这种情况下,我将插入的数据与证书映像进行比较。

因此,如果我能得到日期,我将使用momentjs()使日期成为一致的日期格式。格式()

我想就这些了,谢谢。


共1个答案

匿名用户

根据您的预期输入,这里有一些RegExp将工作:

  1. 求1,2位数(日)
  2. 找到一个空间,-, or/
  3. 查找3到9个字符或2位数的字符串
  4. 找到一个空间,-, or/
  5. 找出2到4位数
let regex = /\d{1,2}(-| |\/)(\w{3,9}|\d{1,2})(-| |\/)\d{2,4}/;
const inputs = ['some random text: 20 September 2020', '20/September/2020', '20-September-20', '20/09/2020', '20 Sep 20', '20-09-2020'];

for(const input of inputs){
 console.log(input.match(regex)[0]);
}