删除不在其他字符之前/之后的尾随空格和行返回

时间:2015-10-14 16:19:02

标签: javascript regex whitespace

我有一个文本区域,我想通过删除之前没有出现的行返回或另一组字符来调整表单的提交(基本上删除行删除不用作段落符的换行符) 。以下是我要删除的换行符的几个示例:

行返回 - 之前和之后之后

/* Space */
Text
/* Space */

行返回 - 之前

/* Space */
Text

行返回 - 在

之后
Text
/* Space */

但是,如果确实存在实际上在 ONE 行返回之后出现的文本,那么它将被视为没问题。

Actual Text
/* Space */
Actual Text

如果为了论证的缘故,文本之间有5行返回,则将删除4。

Actual Text
/* Space */
/* Space - Remove Me */
/* Space - Remove Me */
/* Space - Remove Me */
/* Space - Remove Me */
Actual Text

在探索一些解决方案时,我想到使用trim()来处理尾随空格,但这可能也会删除所有行返回。最好的方法是什么?

以下是我正在替换文本的上下文:

$(function() {
  $(".form").on("submit", function() {
    $("textarea").val().trim();
  });
});

2 个答案:

答案 0 :(得分:0)

我认为以下正则表达式适合您:

text.replace(/^\s+|\s*\r?\n\s*(?=(?:\r?\n){2})|\s+$/g, '');

它将在实际文本(\r)之前删除所有空白字符(\n\r\n^\s+),尾随新行(\s+$)中间有三个或更多新行(\s*\r?\n\s*(?=(?:\r?\n){2}))。



$('form').on('submit', function() {
  $('textarea').val(function(i, val) {
    return val.replace(/^\s+|\s*\r?\n\s*(?=(?:\r?\n){2})|\s+$/g, '');
  });
  return false;
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
  <textarea rows="10" cols="85"></textarea>
  <div><input type="submit"></div>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用:

-> I installed vagrant on my macbook 
-> Wrote a vagrantfile to spinup the first box(VM-ONE) 
-> install vagrant and ansible on VM-ONE using vagrant shell provisioning 
-> Write vagrantfile to spin up VM-TWO and VM-THREE 
-> Write playbook to provision VM-TWO and VM-THREE 
-> Run "vagrant up" on VM-ONE 
-> Use vagrant ansible to provision VM-TWO and VM-THREE.

subject.replace(/(?:\s+)?(^.*?$)\s(?:\s+$)/mg, "$1\n");
$('form').on('submit', function() {
  $('textarea').val(function(i, subject) {
    return subject.replace(/(?:\s+)?(^.*?$)\s(?:\s+$)/mg, "$1\n");
  });
  return false;
});

<强> REGEX DEMO

注意
我已经测试了上面的正则表达式,它适用于您提供的所有示例