如何在 JavaScript 中的模式之间 replace/append 文本

how to replace/append text between a pattern in JavaScript

我想在模式之间重新铺设一个字符串

假设我的输入字符串是

var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";

我想替换每个包含的文本,例如 我对上述输入的输出将是

"include('folder/sometext.abc')"
"include('folder/sometxt.abc')"

但是,我可以使用模式搜索字符串,但不知道如何替换, 搜索模式是

/include\("\w+.\w+"\)/g

thnakyou.

您可以使用positive lookahead来获取要插入文本的位置。

/(?=[a-zA-Z]+?\.)/

var st = "include('sometxt.abc')";
var st2 = "include('somename.xyz')";

const result = st.replace(/(?=[a-zA-Z]+?\.)/, "folder/");

console.log(result);

既然要在before the first '中插入一些东西,为什么不使用indexOf来得到该字符的索引,然后在该字符之后使用 substr 到 'insert' 它?

示例:

var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";

console.log(insert(st));
console.log(insert(st2));

function insert(to, what = 'folder/') {
  let posOfFirstQuote = to.indexOf("'") + 1;
  return to.substr(0, posOfFirstQuote) + what + to.substr(posOfFirstQuote);
}

一些备注:

  • 您的正则表达式与示例不匹配,因为引用不同。
  • 文件名可以包含 \w 不匹配的字符。这可能太局限了。

您可以使用捕获组来匹配插入点前后的部分(对于“folder/”)。您可以使用反向引用来要求开盘价和收盘价是同一类型。

我们可以想象更多检查,但使用这些成分您可以做到:

var input = `include('sometxt.abc')
include('somename.xyz')`;

let result = input.replace(/(\binclude\((['"]))(\S+\.\S+\))/g, "folder/");

console.log(result);