为了账号安全,请及时绑定邮箱和手机立即绑定

替换字符串的一个字符

替换字符串的一个字符

沧海一幻觉 2023-02-24 17:48:11
我有一个看起来像这样的字符串[TITLE|prefix=a]:从该字符串开始,文本|prefix=a是动态的。所以它可以是任何东西或空的。我想[TITLE|prefix=a]用[TITLE|prefix=a|suffix=z].]所以这个想法是从一个以 . 开头的字符串替换[TITLE with |suffix=z]。例如,如果字符串是[TITLE|prefix=a],则应将其替换为[TITLE|prefix=a|suffix=z]。如果是[TITLE],则应将其替换为[TITLE|suffix=z]等等。我如何使用 RegEx 执行此操作?我已经尝试过这种方式,但它给出了一个错误:let str = 'Lorem ipsum [TITLE|prefix=a] dolor [sit] amet [consectetur]';const x = 'TITLE';const regex = new RegExp(`([${x})*]`, 'gi');str = str.replace(regex, "$1|suffix=z]");console.log(str);我也曾尝试用 [ 和 ] 转义字符,new RegExp(`(\[${x})*\]`, 'gi');但这没有帮助。
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您需要记住在常规字符串文字中使用\\来定义单个文字反斜杠。

然后,你需要一个像这样的模式

/(\[TITLE(?:\|[^\][]*)?)]/gi

请参阅正则表达式演示。细节:

  • (\[TITLE\|[^\][]*)- 捕获第 1 组:

    • \[TITLE-[TITLE文本

    • (?:\|[^\][]*)?- 可选择出现一个|字符,后跟除]and之外的 0 个或多个字符[

  • ]- 一个]字符。

在您的 JavaScript 代码中,使用以下代码定义动态模式:

const regex = new RegExp(`(\\[${x}\\|[^\\][]*)]`, 'gi');

参见 JS 演示:

let str = 'Lorem ipsum [TITLE|prefix=a] dolor [sit] amet [consectetur] [TITLE]';

const x = 'TITLE';

const regex = new RegExp(`(\\[${x}(?:\\|[^\\][]*)?)]`, 'gi');

str = str.replace(regex, "$1|suffix=z]");

console.log(str);

// => Lorem ipsum [TITLE|prefix=a|suffix=z] dolor [sit] amet [consectetur]


查看完整回答
反对 回复 2023-02-24
?
森栏

TA贡献1810条经验 获得超5个赞

我认为您的问题的解决方案与此类似:


let str = 'Lorem ipsum [TITLE|prefix=a] dolor [sit] amet [consectetur]';


str = str.replace(/(\[[^\|\]]+)(\|[^\]]*)?\]/g, "$1$2|suffix=z]");


console.log(str);


查看完整回答
反对 回复 2023-02-24
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信