【问题标题】:Can't seem to trim all leading whitespace - JavaScript or jQuery似乎无法修剪所有前导空格 - JavaScript 或 jQuery
【发布时间】:2015-06-26 15:09:58
【问题描述】:

我正在尝试使用以下代码从 textarea 输入框中修剪所有前导空格:

replaceString = replaceString.replace(/^\s+|^\t+|\t+|\s+$/g, "");

当我这样做时,我会离开

    .map_image #map_link_0 { width: 40px; height: 42px; top: 11px; left: 11px; }
    .map_image #map_link_1 { width: 47px; height: 42px; top: 62px; left: 19px; }

.map_image #map_link_0 { width: 40px; height: 42px; top: 11px; left: 11px; }
 .map_image #map_link_1 { width: 47px; height: 42px; top: 62px; left: 19px; }

我做错了什么?

JSFiddle

【问题讨论】:

  • ^ 字符仅在正则表达式开头和字符类内部([...])才有意义
  • 好吧,从您粘贴的示例中,代码看起来就像您想要的那样 - 删除了两个前导空格。你想在每一行输入中都这样做吗?
  • @Paweł Chorążyk,这是我的目标,是的。我不太擅长正则表达式。
  • 今天早上我累了。当我实际询问正则表达式时,我什至没有意识到我标记了 JavaScript/jQuery 问题。对不起,伙计们。

标签: javascript jquery regex string trim


【解决方案1】:

默认情况下,表达式不考虑多行,因此^ 仅匹配输入的最开始。您可以通过添加多行/m 标志来解决此问题(总共/gm)。

来自Mozilla's JS RE docs

^ 匹配输入的开头。如果多行标志设置为 true,则在换行符之后也立即匹配。

$ 匹配输入的结尾。如果多行标志设置为 true,则也匹配紧接在换行符之前的字符。

【讨论】:

  • 做到了。我不知道多行标志。我似乎误解了全局标志的用途。
  • 我期待你做同样的事情,但它因语言而异(例如,gsub 可以在 Ruby 中工作)。在 JS 中,/g 只是“全局”的行。
猜你喜欢
  • 2012-03-07
  • 2011-03-13
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多