我需要计算textarea中的所有行。 我的代码:
function textareaCurLineNum(obj)
{
return obj.value.split(/[\r\n]/g).length;
}
在Firefox和Chrome中它运行良好。 在Opera中,它还会返回一个。
我试试这个:
function textareaCurLineNum(obj)
{
if (!/Opera/.test(navigator.userAgent)){
return obj.value.split(/[\r\n]/g).length;
} else {
return obj.value.split(/[\r\n]/g).length-1;
}
}
现在,如果lines = 3,则opera返回4,4行 - 6,5行 - 8。 哪里有问题?
答案 0 :(得分:3)
方括号包含符号集,而不是序列。在正则表达式中用\ n分割。
function textareaCurLineNum(obj)
{
if (!/Opera/.test(navigator.userAgent)){
return obj.value.split(/\n/g).length;
} else {
return obj.value.split(/\n/g).length-1;
}
}
答案 1 :(得分:1)
尝试仅在\n
上进行拆分。你写它的方式 - 如果我有:
first line \r\n
second line
此拆分将返回3,因为它将\r
和\n
之间的虚无作为一行计算。
更强大的解决方案是首先将所有\r\n
(胜利)和\r
(mac)替换为\n
,然后在\n
上拆分,从而对文字进行规范化