【发布时间】:2019-07-21 07:39:55
【问题描述】:
我使用 gmail api 获取电子邮件内容,然后在 node.js 中将其转换为字符串。
Buffer.from(dataToDecode, 'base64').toString('utf8')
然后我使用正则表达式在文本中搜索日期。例如2019 年 2 月 27 日
/[A-Z][a-z]{2} [0-9]{2}, [0-9]{4}/g
它没有匹配,但是当我 console.log 内容时,日期是存在的。然后我将日期复制到一些在线解码工具,结果是
\xe2\x80\x8c\x46\xe2\x80\x8c\x65\xe2\x80\x8c\x62\xe2\x80\x8c\x20\xe2\x80\x8c\x32\xe2\x80\x8c\x37\xe2\x80\x8c\x2c\xe2\x80\x8c\x20\xe2\x80\x8c\x32\xe2\x80\x8c\x30\xe2\x80\x8c\x31\xe2\x80\x8c\x39\xe2\x80\x8c\x0a
和
\x46\x65\x62\x20\x32\x37\x2c\x20\x32\x30\x31\x39
两者都可以给出相同的“2019 年 2 月 27 日”。如何使用正则表达式捕获第一种编码(即较长的编码)?
【问题讨论】:
-
也许接受的答案@stackoverflow.com/questions/24811008/…可以帮助你。
-
\xe2\x80\x8c是 U+2080 ZERO-WIDTH NON-JOINER 的 UTF-8。你基本上只是想丢弃那些。