问题:
在javascript中使用正则表达式,如果我有一个包含零个或多个换行符或回车符的字符串,那么告诉 last 换行符或回车符后有多少个字符的最佳方法是什么?
尝试:
我尝试了各种正则表达式,但没有运气。说我有字符串:
“_\nHELLO\nWORLD\nSALUTATIONS
”
在正常输出中,它看起来像这样:
_
HELLO
WORLD
SALUTATIONS
不应/^(\r|\n){1}/g
全局找到一个字符串g
,只有一个返回或换行符{1}
出现(\r|\n)
,或者在这种情况下,“SALUTATIONS” ?相反,没有找到匹配。
答案 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);
$
标记字符串的结尾,默认情况下.
与换行符不匹配,因此匹配的结果恰好是最后一行。