在字符串的末尾找到单个或多个\ n

时间:2013-10-30 00:51:19

标签: javascript jquery regex

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

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,并且当只有一个\n时返回false。

我想使用jquery $.trim()方法,但如果它只是制表符,它会截断最后一行。我不能这样做,因为我仍然想要记住那条线的存在,即使它是空的。

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

2 个答案:

答案 0 :(得分:2)

我认为你在寻找:

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

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

  • +是“前一个字符的一次或多次出现”的量词
  • $是“字符串的结束位置”锚。

答案 1 :(得分:0)

如果您想摆脱它,请尝试

myTest = $.trim(myText)

注意:它也将删除空格

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