我现在正在寻找如何获得多行文字的最后一行。
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中使用正则表达式获取多行文本的最后一行?
谢谢。
答案 0 :(得分:2)
[\S]+$
(对于\S+$
来说很长),意味着匹配字符串末尾的所有非空格。
由于您的字符串在最后一行的末尾有一个空格,因此它不匹配任何内容。
即使您删除了该尾随空格,也只会匹配ipsum.
只需使用:.*$
这取决于.
默认不匹配换行符的事实((?s)
可以在需要时更改。
因此它匹配从最后一个换行符到字符串结尾的所有字符。
请参阅regex101.com了解演示。
现在,如果文字在最后一行之后有一个或多个换行符,那么它不是 last 行,请改用.*\s*$
。请参阅demo。
要在最后不捕获空行,请使用捕获组捕获最后一个非空行:(.*)\s*$
。请参阅demo。
答案 1 :(得分:1)
我对正则表达不太满意。
但是,要回答这个问题,您可以使用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]);
答案 2 :(得分:0)
使用正则表达式,您可以执行此操作
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;
答案 3 :(得分:0)
如果为空,则应使用(.+)([^\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>