【问题标题】:How can I get the date inside string that contains a text? [closed]如何获取包含文本的字符串中的日期? [关闭]
【发布时间】:2022-01-23 19:06:44
【问题描述】:

我有一个功能可以将插入的数据与图像中的原始数据进行比较,我们使用 Google Vision 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 日)?这样我就可以对插入的数据进行比较。

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

也许我会发现只有每个块的日期(没有任何文字,它只显示日期),
或日期以空格分隔(2021 年 9 月 20 日),
或日期以破折号分隔(2021 年 9 月 20 日),
或日期以斜线分隔( 20/September/2021 ),
或使用数字的日期月份 ( 20-09-2021 )。

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

所以,如果我能得到日期,我将使用 momentjs().format() 使日期成为一致的日期格式

谢谢。

【问题讨论】:

    标签: javascript node.js regex momentjs


    【解决方案1】:

    根据您的预期输入,这里有一些可以使用的 RegExp:

    1. 查找 1,2 位数字(天)
    2. 查找空格、- 或 /
    3. 查找 3 到 9 个字符或 2 位数字的字符串
    4. 查找空格、- 或 /
    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]);
    }

    【讨论】:

    • 是的,我想我需要再次学习正则表达式。
    • 我一般不喜欢它,会先尝试使用 String 方法,但这是一个很好的例子,说明它何时真正有用。
    猜你喜欢
    • 2014-10-20
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    相关资源
    最近更新 更多