使用正则表达式捕获utf-8中的日期

问题描述 投票:1回答:1

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

node.js regex utf-8
1个回答
-1
投票

1.检查unicode table

2.设定条件:

UTF-8:正则表达式描述

\x20:[\ s]空间

\x2C:[]段

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

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

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

图案

字符串:Feb 27, 2019

正则表达式:/[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

© www.soinside.com 2019 - 2024. All rights reserved.