Javascript 中给定字符之间的字符串子串集

Substring set of string between given characters in Javascript

我得到的字符串是

["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]

在这里我想删除从T到Z的子串以转换成这种形式:

["2021-01-13","2021-01-14","2021-01-15"]

我确实喜欢,但它只替换了第一个字符串并删除了其他字符串,我如何为每个单独执行此操作

notFound=notFound.replace(/\T.*\Z/g, '');

我可以使用 javascript 子串函数来实现吗?

你做对了,就像这样循环:

["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"].map(s => s.replace(/\T.*\Z/g, ''));

您可以替换为未准备好的搜索。

const
    data = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]',
    result = data.replace(/T.*?Z/g, '');

console.log(result);

我想你的意思是你最初有一个 array,而不是一个字符串,在这种情况下,这个答案就足够了。

您可以使用 Array.prototype.map() 对数组的每个元素进行替换。

const x = ["2021-01-13T09:45:48.046Z", "2021-01-14T09:45:48.096Z", "2021-01-15T09:45:48.099Z"];
const y = x.map(e => {
  return e.replace(/T.*Z/, "");
});
console.log(y);

旁注:不需要对正则表达式中的TZ进行转义,全局标志是多余的。

因为你说的是​​字符串所以你必须解析它。

const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';

let x = JSON.parse(str).map((e) => e.replace(/\T.*\Z/g,  ''));

console.log(x);

如果字符串总是采用相同的格式,您可以将字符串转换为数组,然后在 T 上拆分并取第一部分。

const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s => s.split("T")[0]);
console.log(result);

对于特定的匹配,您可以使用格式匹配日期时间的模式 ^(\d{4}-\d{2}-\d{2}T)\d{2}:\d{2}:\d{2}\.\d{3}Z$ 并替换为捕获组 1。

const str = '["2021-01-13T09:45:48.046Z","2021-01-14T09:45:48.096Z","2021-01-15T09:45:48.099Z"]';
let result = JSON.parse(str).map(s =>
  s.replace(/^(\d{4}-\d{2}-\d{2})T\d{2}:\d{2}:\d{2}\.\d{3}Z$/, "")
);
console.log(result);