0

我正在尝试捕获制表符分隔列表的值:

1   11  11111111
2   22  2222
3   33  33333333

它非常简单,除了最后一行可能有一个尾随\n,当我遍历脚本其他区域的行时,这会给我一些错误。如果它有这个尾随\n,我想摆脱它。我可以这样做:

var res = myStr.substr(-1);
if (/\n/.test(res)){
    return myStr.substr(0, myStr.length - 1)
}

但当然,这将无法截断带有多个尾随的字符串\n。我想我可以使用子字符串方法循环,​​直到最后一个字符不是\n,但是我想知道是否有更优雅的正则表达式方法。

/^\s*[\r\n]/gm.test(myStr)

\n出于某种原因,只有在字符串末尾有多个时才返回 true ,而在正好有一个时返回 false \n

我想使用 jquery$.trim()方法,但如果它只是选项卡,它将截断最后一行。我不能这样做,因为即使它是空的,我仍然想记录该行的存在。

并不是说循环是一个完全不支持的想法,但是有没有办法用正则表达式解决这个问题?

4

2 回答 2

2

我认为您正在寻找:

var result = yourString.replace(/\n+$/,"");

在正则表达式基础知识中,

  • +是“前一个字符出现 1 次或多次”的量词
  • $是“字符串的结束位置”锚点。
于 2013-10-30T00:53:36.093 回答
0

如果您想摆脱它,请尝试

myTest = $.trim(myText)

注意:它也会删除空格

否则尝试测试/\n+$/.test(myText)

于 2013-10-30T00:53:56.397 回答