我正尝试在[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>
有没有办法我只能在__tt
和tt__
标签之间进行替换?
答案 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);