Javascript正则表达式匹配最后一次出现

时间:2014-06-25 18:17:28

标签: javascript regex string

问题:
在javascript中使用正则表达式,如果我有一个包含零个或多个换行符或回车符的字符串,那么告诉 last 换行符或回车符后有多少个字符的最佳方法是什么?

尝试:
我尝试了各种正则表达式,但没有运气。说我有字符串:

_\nHELLO\nWORLD\nSALUTATIONS
在正常输出中,它看起来像这样:
_ HELLO WORLD SALUTATIONS

不应/^(\r|\n){1}/g全局找到一个字符串g,只有一个返回或换行符{1}出现(\r|\n),或者在这种情况下,“SALUTATIONS” ?相反,没有找到匹配。

4 个答案:

答案 0 :(得分:4)

如何不使用正则表达式

string.split(/\r|\n/).pop().length;

将字符串拆分为换行符,弹出最后一行并获取length

的字符数

答案 1 :(得分:1)

不,你的正则表达式只会在字符串的最开头找到CR / NL,因为那里有^ anchor

要找到最后一个,您宁愿将表达式锚定在字符串的末尾:

/[\r\n]([^\r\n]*)$/

通过匹配,您将获得第一个捕获组中最后一个换行符之后的所有字符。

答案 2 :(得分:0)

试试这个:

string.length - string.lastIndexOf('\n') - 1

或者,如果您确实还需要检查\r

string.length - string.search(/[\n\r].*?$/) - 1

答案 3 :(得分:0)

这是一个简短的方法

console.log(text.match(/.*$/)[0].length);

$标记字符串的结尾,默认情况下.与换行符不匹配,因此匹配的结果恰好是最后一行。