javascript - 正则表达式替换破折号之间的所有内容,包括新行?

标签 javascript jquery regex replace

我有以下虚线标记,如果 $("#AddInfo") 不为空,我想替换其间的所有内容。如果 $("#AddInfo") 为空,那么我想删除标记之间的所有内容。当您第一次添加一些内容时它会起作用,但第二次调用该函数时它会起作用,例如如果 $("#AddInfo") 有新内容或为空,那么标记之间没有任何变化?

var msg = "some stuff --- ---  more stuff";

if ($("#AddInfo").val())
  msg = msg.replace(/---[^]---/, "---\n" + $("#AddInfo").val() + "\n---");
else
  msg = msg.replace(/---[^]---/, "--- ---");
}

最佳答案

(这可能应该是一条注释,但你不能在其中包含代码,所以......)

您正在追求这样的东西吗?

function onButton() {

  var msg = $("#AddInfo").val(),
      beginning = 'some stuff ---',
      end = '--- more stuff',
      re = new RegExp(beginning + '\\s*([^]*)\\s*' + end),
      content = re.exec($("#output").html())[1];

  if( msg=='' ) {
    content = '';
  }
  else {
    if( content == '' ) {
      content = '<br/>';
    }
    msg += '<br/>';
  }

  $('#output').html( beginning + content + msg + end );
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <input id="AddInfo"/>
  <button type="button" onclick="onButton()">Add</button>
  <br/>
  <span id="output">some stuff --- --- more stuff</span>
</form>

关于javascript - 正则表达式替换破折号之间的所有内容,包括新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544187/

相关文章:

javascript - 调整旋转对象的大小后如何更新左上角的位置?

javascript - 如何在不更改为新对象的情况下设置对象的构造函数?

javascript - JQuery Jcrop 没有调整选择大小的功能?

javascript - 如何从 Google map url 获取准确的 lat lng

regex - 如何从多行文件中提取子字符串

javascript - 如何使用桌面浏览器测试触摸事件?

javascript - 如何在winjs中设置png图像颜色

javascript - 如何从 HTML 中提取 "parent with two child' s"模式

javascript - 如果隐藏,则单击时反转动画

node.js - 正则表达式搜索错误