我有以下虚线标记,如果 $("#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/