[英]How to get the last character(s) of a single, specified, line of a multiline text in JavaScript?
[英]How to get last line of multiline text with matching regex?
我现在正在寻找几个小时如何获取多行文本的最后一行。
Lorem ipsum dolor sit amet,
Praesent libero. Sed cursus ante
dapibus diam. Sed nisi. Nulla
imperdiet. Duis sagittis ipsum.
我会得到:
imperdiet. Duis sagittis ipsum.
我尝试过像这样的正则表达式:
var y = x.match(/[\S]+$/);
但它返回:
null
如何在javascript中使用正则表达式获取多行文本的最后一行?
谢谢。
我对Regex不好。
但是,要回答这个问题,您可以使用split('\\n')
var myText = <your multi line text>;
var lines = myText.split('\n');
console.log(lines[lines.length - 1]); // This should print last line
根据您的JSFiddle,您必须采取倒数第二行,因为最后一行是EMPTY
var x=document.getElementsByTagName('p')[0].innerHTML;
var y = x.split('\n');
alert(y[y.length - 2]);
[\\S]+$
(对于\\S+$
来说很长),表示匹配字符串末尾的所有非空格。
由于您的字符串在最后一行的末尾有一个空格,因此不匹配任何内容。
即使您删除了该尾随空格,它也只会匹配ipsum.
只需使用: .*$
这取决于事实.
默认情况下不匹配换行符( (?s)
可以在需要时进行更改) 。
因此,它将匹配从最后一个换行符到字符串结尾的所有字符。
有关示例 ,请参见regex101.com 。
现在,如果文本在最后一行之后有一个或多个换行符,那么它实际上并不是最后一行,请改用.*\\s*$
。 参见演示 。
若要不捕获末尾的空行,请使用捕获组捕获最后一个非空行: (.*)\\s*$
。 参见演示 。
使用正则表达式,您可以执行此操作
var text = your text goes here;
var regex = /\n.*$/;
match = regex.exec(text);
console.log(match[0].slice(1));
检查以\\n
(换行符)开头,然后以\\n
以外的结尾结束的匹配项,该匹配项将为您提供最后一行。 最后,只需从匹配项中删除第一个字符,因为它将是开始\\n
(前一行的最后一个字符)。
请注意,这仅在文本实际上是多行-包含\\n
时才有效,因此您也应该首先测试它。
if (text.indexOf('\n') == -1) return text;
如果为空,则应使用(.+)([^\\s])
忽略最后一行:
对于多段:
var u = document.getElementsByTagName('p'); for (var i = 0; i < u.length; i++) { var z = u[i].innerHTML.match(/(.+)([^\\s])/g); console.log(z[z.length - 1]); }
<p> Lorem ipsum dolor sit amet, Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla imperdiet. Duis sagittis ipsum. </p><p> Lorem ipsum dolor sit amet, Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla imperdiet. Duis sagittis ipsum. </p><p> Lorem ipsum dolor sit amet, Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla imperdiet. Duis sagittis ipsum. </p><p> Lorem ipsum dolor sit amet, Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla imperdiet. Duis sagittis ipsum. </p>
对于单人:
var x=document.getElementsByTagName('p')[0].innerHTML; var y = x.match(/(.+)([^\\s])/g); console.log(y[y.length -1]);
<p>Lorem ipsum dolor sit amet, Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla imperdiet. Duis sagittis ipsum. </p>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.