繁体   English   中英

替换两个词之间的所有内容,包括这个词

[英]Replace everything between two words including this words

如何将此tt /* a */ pp /* b */ dd更改为

tt dd

这不包括 a 和 b 链接

var test = "tt /* a */ pp /* b */ dd";
// expected:
var res = "tt dd";

正则表达式简单吗?

如果你想删除两件事之间的东西,包括那些东西,正则表达式可以很容易地做到这一点:

 const str = 'tt /* a */ pp /* b */ dd'; const start = '/\\* a \\*/'; const end = '/\\* b \\*/'; const pattern = new RegExp(`${start}.*${end}`, 'g'); const result = str.replace(pattern, ''); console.log(pattern); console.log(result);

然而,有两个陷阱。

第一个来自您选择的分隔符。 由于其中有一个* ,这在正则表达式中具有特殊含义,因此您需要确保将其转义。 如果您选择的分隔符没有正则表达式特有的字符,则不必这样做。

另一个问题与其说是一个问题,不如说是一个需求问题。 你想要tt dd ,但你会得到tt dd正如你描述的那样(两个空格),因为这两个空格都在你的分隔符之外。

有几种方法可以解决这个问题。 一种可能是用一个空格替换两个或多个空格:

 const str = 'tt dd'; const result = str.replace(/\s+/g, ' '); console.log(result);

如果ttdd不同,这里是一个正则表达式,用于删除这些差异之间的内容:

 const re = /\s+.*\/\s+/gm; let str = `tt /* a */ pp /* b */ dd`; str = str.replace(re,' '); console.log(str); // tt dd // Change tt and dd to aa and bb, instead, for example: str = `aa /* a */ pp /* b */ bb`; str = str.replace(re,' '); console.log(str); // aa bb

如果ttdd没有变化,我认为使用正则表达式没有意义; 您只需(静态地)将该字符串设置为所需的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM