Javascript 如何在字符串中找到日期和时间的第一个索引

Javascript 如何在字符串中找到日期和时间的第一个索引,javascript,Javascript,我有一个YYYY-MM-DD日期格式的字符串 var x = "I will need 2 pieces of that product 2020-01-16 04:38:09.After that i will need another 2020-01-16 04:38:09."; 我需要将文本从0添加到第一个日期的开始,这样整个字符串的输出应该是: I will need 2 pieces of that product 老实说,因为我不认识reg-ex,所以我什么都没试过。这就是我需要

我有一个YYYY-MM-DD日期格式的字符串

var x = "I will need 2 pieces of that product 2020-01-16 04:38:09.After that i will need another 2020-01-16 04:38:09.";
我需要将文本从0添加到第一个日期的开始,这样整个字符串的输出应该是:

I will need 2 pieces of that product
老实说,因为我不认识reg-ex,所以我什么都没试过。这就是我需要帮助的原因。
提前谢谢

也许这对你有帮助

var x=“我需要两件该产品2020-01-16 04:38:09。之后我需要另一件2020-01-16 04:38:09。”;
变量年份=(新日期()).getFullYear();
var结果=x.substr(0,x.indexOf(年));

警报(结果)您可以使用正则表达式和组进行此操作。
这里您可以注意到,我使用了一个惰性运算符(
*?
),这样,它将只匹配字符串的第一部分和第一个日期

^(.*?)(?:\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})
此正则表达式将匹配任何内容,直到它看到日期格式
YYYY-MM-DD HH:MM:ss
。 比赛的第一组就是你要找的

在Javascript中,您可以这样实现它:

let text='2020-11-26 2020-01-16 04:38:09之前,我需要2件该产品。之后,我需要另一件2020-01-16 04:38:09';
//请注意,我们在日期前后使用非捕获组
//因为我们不需要这个零件。
设正则表达式=/^(.*)(:\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2})/;
让match=regex.exec(text);
//数组的第一个元素包含所有匹配项,
//第二组包含第一组。
console.log(匹配[1])尝试此正则表达式:
它匹配所有内容,直到出现(4个数字)后跟(-)后跟(2个数字)后跟(-)后跟(2个数字)

const regex=/(.*)\d{4}-\d{2}-\d{2}/;
const str=`我需要两件该产品2020-01-16 04:38:09。之后我需要另一件2020-01-16 04:38:09。`;
让m;
if((m=regex.exec(str))!==null){
console.log(m[1]);

}
到目前为止您尝试了什么?向我们展示您的代码请使用正则表达式找到日期第一次出现的位置,然后从0到那里的子字符串,并使用strip函数删除任何不必要的空格。您可以使用以下正则表达式:/.*(?=\d{4}-\d{2}-\d{2})/@AndrewL64老实说因为我不知道reg ex我什么都没试过这就是我需要帮助的原因如果日期是昨天,去年或距今34000年?然后使用RegExp检测任何日期索引时间部分呢?@MaksimTikhonov在这种情况下不需要它,因为OP只需要字符串的第一部分。@Andrej非常欢迎您,我建议您查看我提供的regex以尝试理解它,这是有一天创建自己的字符串的关键。你可以检查一下解释。@Nicolas是的,你是对的。这是我在编程中的弱点。我会检查并学习解释,谢谢你的时间:)@Nicolas顺便说一句,如果用户输入的注释是2020-01-16的日期格式,就像我们在正则表达式中搜索的那样,我可能会有问题。那么它将不起作用。我如何拥有正则表达式还有时间吗?