Javascript innerText-回车符-正则表达式不工作

Javascript innerText-回车符-正则表达式不工作,javascript,regex,Javascript,Regex,我试图解析一些文本,而innerText没有输出换行符。我使用了空白,不知道为什么它不起作用。 在这种情况下,parts变量应该有3个字符串,但只能得到一个字符串 我肯定我错过了一些琐碎的东西 文件 #测试1{ 空白:预包装; } 1. 00:00:13,513 --> 00:00:16,607 A. 2. 00:00:18,218 --> 00:00:20,516 B 3. 00:00:22,355 --> 00:00:24,880 C var test1=document.getElem

我试图解析一些文本,而innerText没有输出换行符。我使用了空白,不知道为什么它不起作用。 在这种情况下,parts变量应该有3个字符串,但只能得到一个字符串

我肯定我错过了一些琐碎的东西


文件
#测试1{
空白:预包装;
}
1.
00:00:13,513 --> 00:00:16,607
A.
2.
00:00:18,218 --> 00:00:20,516
B
3.
00:00:22,355 --> 00:00:24,880
C
var test1=document.getElementById('test1').innerText;
var parts=test1.split(/\r?\n\s+\r?\n/g);
控制台日志(部分)

您的正则表达式格式不正确<代码>\r?\n\s+\r?\n表示:

  • \r?
    -可以选择匹配换行符
  • \n
    -匹配换行符
  • \s+
    -匹配一个或多个空格字符
  • \r?
    -可以选择匹配换行符
  • \n
    -匹配换行符
它至少需要一个换行符,后跟空格,后跟另一个换行符。但由于输入文本中没有两个连续的换行符,因此不会分割任何内容

为了匹配完整的行,我只需按
\n
进行拆分,修剪每个字符串,并过滤掉空字符串:

const text=`
A.
B
C
`;
常量结果=文本
.split(“\n”)
.map(str=>str.trim())
.过滤器(布尔值);

控制台日志(结果)您的正则表达式格式不正确<代码>\r?\n\s+\r?\n
表示:

  • \r?
    -可以选择匹配换行符
  • \n
    -匹配换行符
  • \s+
    -匹配一个或多个空格字符
  • \r?
    -可以选择匹配换行符
  • \n
    -匹配换行符
它至少需要一个换行符,后跟空格,后跟另一个换行符。但由于输入文本中没有两个连续的换行符,因此不会分割任何内容

为了匹配完整的行,我只需按
\n
进行拆分,修剪每个字符串,并过滤掉空字符串:

const text=`
A.
B
C
`;
常量结果=文本
.split(“\n”)
.map(str=>str.trim())
.过滤器(布尔值);
控制台日志(结果)只需使用

var parts = test1.split(/\s+/g).filter(n => n);

文件
#测试1{
空白:预包装;
}
a、b、c
var test1=document.getElementById('test1').innerText;
var parts=test1.split(/\s+/g).filter(n=>n);
控制台日志(部分)
只需使用

var parts = test1.split(/\s+/g).filter(n => n);

文件
#测试1{
空白:预包装;
}
a、b、c
var test1=document.getElementById('test1').innerText;
var parts=test1.split(/\s+/g).filter(n=>n);
控制台日志(部分)

我发现,使用SRT subtitles文件格式,这个正则表达式需要CR(回车)才能工作

当您将文本放入div时,它会忽略CR字符,因此innerText不会检测到它们,这就是这个正则表达式不起作用的原因

当您这样做时:

var parts = test1.split('\r')
它返回0个匹配项,因为html隐藏了回车符


我决定用base64编码字符串并将其存储在输入中,而不是按原样存储在div中。

我发现使用SRT subtitles文件格式时,这个正则表达式需要CR(回车)才能工作

当您将文本放入div时,它会忽略CR字符,因此innerText不会检测到它们,这就是这个正则表达式不起作用的原因

当您这样做时:

var parts = test1.split('\r')
它返回0个匹配项,因为html隐藏了回车符


我决定用base64编码字符串并将其存储在输入中,而不是按原样存储在div中。

var parts=test1.split(/\s+//g).filter(n=>n);var parts=test1.split(/\s+/g).filter(n=>n);嗨,mplungjan,你能看看我的问题吗,我已经用一个更真实的测试字符串更新了它。我知道正则表达式使用srt文件。有什么我需要改变的html字符串,使这项工作?嗨,mplungjan,你能看看我的问题,我已经更新了一个更真实的测试字符串。我知道正则表达式使用srt文件。html字符串中有什么我需要更改的吗?Hi CertainPerformance,我在回答时几乎检查了这个,但是我仍然对真实字符串(不是abc…)有问题,你能看看我的问题吗,我已经用更真实的测试字符串更新了它。我知道那里的正则表达式使用srt文件。要使这个正则表达式工作,我需要在html中更改什么吗?如果你能帮助我,非常感谢。新年快乐。连续换行之间没有空格,因此
\s+
不匹配。删除该部分。Hi CertainPerformance,我在回答时几乎检查了这一点,但我仍然在使用真实字符串(不是abc…)时遇到问题,你能看看我的问题吗,我已经用更真实的测试字符串更新了它。我知道那里的正则表达式使用srt文件。要使这个正则表达式工作,我需要在html中更改什么吗?如果你能帮助我,非常感谢。新年快乐。连续换行之间没有空格,因此
\s+
不匹配。把那部分去掉。