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

时间:2017-10-03 12:03:35

标签: 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(/---[^]---/, "--- ---");
}

2 个答案:

答案 0 :(得分:1)

(这应该是评论,但你不能在' em中使用代码,所以...)

你之后是否会这样?



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 );
}
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您忘了添加量词:

/---[^]*?---/g
       ^^

<强>详情

  • --- - 3 -个字符
  • [^]*? - 尽可能少的0个字符,直到第一个...
  • --- - 3 -个字符。