JavaScript查找并替换指定字符之间的字符

时间:2020-04-01 15:10:45

标签: javascript regex

我正尝试在[space]-之间用__tt替换所有tt__

我可以将整个字符串中的 space 替换为以下正则表达式。

var str = document.getElementById('tt').value;
str = str.replace(/(?<=__tt.*) (?=.*tt__)/g, '-');
console.log(str);
textarea {
  width: 400px;
  min-height: 100px;
}
<textarea id="tt">This is a long text __tt where i want 
to replace
some text tt__ between some character
</textarea>

有没有办法我只能在__tttt__标签之间进行替换?

3 个答案:

答案 0 :(得分:3)

您可以积极向前看。

var str = 'This is a long text __tt where i want to replace some text tt__ between some character';

str = str.replace(/(?<=__tt.*) (?=.*tt__)/g, '-');

console.log(str);

答案 1 :(得分:2)

如果没有环顾四周,并非所有浏览器都完全支持,则您也可以仅在选定的匹配项上使用带有回调函数的替代方法。

str = str.replace(/__tt.*?tt__/g, m => m.replace(/ /g, "-"));

var str = 'This is a long text __tt where i want to replace some text tt__ between some character';
str = str.replace(/__tt.*?tt__/g, m => m.replace(/ /g, "-"));
console.log(str);

注意

如果您要用单个连字符替换多个连续的空格,则可以使用 +重复空格1次或更多次,或者使用\s+匹配1个或多个空格字符

关于更新的问题,获取元素的文本:

var elm = document.getElementById("tt");
elm.textContent = elm.textContent.replace(/__tt[^]*?tt__/g, m => m.replace(/ +/g, "-"));
<textarea id="tt" rows="4" cols="50">This is a long text __tt where i want
to replace
some text tt__ between some character
</textarea>

答案 2 :(得分:1)

可以尝试

let str = 'This is a long text __tt where i want to replace some text tt__ between some character';
str = str.replace(/__tt.*?tt__/g, (item) => item.replace(/ /g, "-"));
console.log(str);

相关问题