node.js - 使用正则表达式捕获utf-8格式的日期

标签 node.js regex utf-8

我使用 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 日”。如何使用正则表达式捕获第一种类型编码(即较长的编码)?

最佳答案

1。检查unicode table .

2。设置条件:

UTF-8:正则表达式说明

\x20: [\s] 空格

\x2C: [\,] 逗号

\x30-\x39:[0-9]位数字

\x41-\x5A:[A-Z] 大写字母

\x61-\x7A:[a-z] 小写字母

模式

字符串:2019 年 2 月 27 日

正则表达式:/[A-Z][a-z][a-z]\s\d\d\,\s\d{4}/g

UTF-8: /[\x41-\x5A][\x61-\x7A]{2}\x20[\x30-\x39]+\x2C\x20[\x30-\x39]{4}/g

Regex101 demo

关于node.js - 使用正则表达式捕获utf-8格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54907919/

相关文章:

node.js - Nodemailer 从未使用自己的 smtp 服务器收到问候语

regex - 为什么我的 sed 命令有时无法使用 r 标志

java - XML 公共(public)标识符中无法识别波浪号

php - 如何知道MySQL表字段中存储的文本的实际编码?

javascript - Node.js 导出变量

node.js - 按数组中的最后一项排序

node.js - 在express-handlebars中包含布局问题

regex - 如何在 Emacs 正则表达式中表示 "not a bracket"?

javascript - 使用变量时如何防止正则表达式测试切换?

utf-8 - OCaml websocket "Invalid UTF8 data"