我正在尝试将值插入textarea而不是字符串。但该功能是在替换字符串后删除字符串上方的任何空行。这是一个小提琴:
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]
或以空格开头。
答案 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\]/);