正则表达式:如何匹配日期时间字符串的特定字符的前 2 个实例

Regex How to match the first 2 instances of a specific character for Date Time string

提问人:Alfonse 提问时间:10/12/2023 更新时间:10/12/2023 访问量:33

问:

在 JavaScript 中,我有一个这样的日期格式:

2023-11-02 10:00:00 -0700

我只想匹配 2023-11-02 之间的符号的前两个实例,但不匹配 -0700 前面的实例,然后将其替换为,以便最终输出为--/

2023/11/02 10:00:00 -0700

我尝试进行正则表达式匹配:但仍然匹配 -0700 前面的正则表达式,并且输出无效。("2023-11-02 10:00:00 -0700").replace(/[^\d\:\ ]{1,2}/g, '/');-'2023/11/02 10:00:00 /0700'

javascript 正则表达式 date datetime

评论

0赞 bobble bubble 10/13/2023
如果输入总是这样,你甚至可以使用一个词边界\b-
0赞 InSync 10/13/2023
您拥有的文本(几乎)采用规范支持的格式。如果可以将源修改为始终以标准格式输出,您可能根本不需要依赖正则表达式(尽管 API 很糟糕,但它仍然有些可用)。另见 Temporal 提案Date

答:

2赞 anubhava 10/12/2023 #1

您可以使用此正则表达式进行匹配:

/(?<=\d)-(?=\d)/g

这里:

  • (?<=\d)确保在匹配之前有一个数字。-
  • (?=\d)确保匹配后有一个数字。-

然后将其替换为 ./

正则表达式演示

const s = '2023-11-02 10:00:00 -0700';

var r = s.replace(/(?<=\d)-(?=\d)/g, '/');

console.log(r);