将文本插入文本区域时保留新行

时间:2013-12-29 17:51:44

标签: javascript regex

我正在尝试将值插入textarea而不是字符串。但该功能是在替换字符串后删除字符串上方的任何空行。这是一个小提琴:

http://jsfiddle.net/qH4v4/

var pattern = new RegExp(/(?:\s|^)\[image\]/);
var place_image_reference = function(textarea, tag, reference) {
  return textarea.val(textarea.val().replace(pattern, "[image 123]") + reference);
};

基本上,该函数应在文本中找到[image]的实例,并将其替换为[image 123]。正则表达式只应在新行上匹配[image]或以空格开头。

2 个答案:

答案 0 :(得分:3)

请确保不要替换上面匹配的分隔符:

var pattern = new RegExp(/(\s|^)\[image\]/);
var place_image_reference = function(textarea, tag, reference) {
  return textarea.val(textarea.val().replace(pattern, "$1[image 123]") + reference);
};

将非捕获组更改为常规(捕获)组,然后.replace()调用将匹配的分隔符放回。

答案 1 :(得分:0)

你也正在更换换行符,所以只需删除换行符的先行检查。
使用这种模式:

var pattern = new RegExp(/\[image\]/);