gpt4 book ai didi

javascript - 查找并替换@foo的实例,但不替换@@foo的实例

转载 作者:行者123 更新时间:2023-11-28 19:52:01 25 4
gpt4 key购买 nike

我尝试使用 @ 符号作为指示要在字符串中交换的变量的方法,但我也想在文本字符串中包含 @ 符号。

示例:

Hello @website, you can email me at email@@website.com

给定此代码,它将查找替换@website,并单独保留双@@的任何实例;但是,由于 JavaScript 不支持负向后查找,我不确定如何修改以下正则表达式以不选择双 @@ 的实例:

@([a-z0-9]+)

输出:

Hello Patrick, you can email me at email@website.com

注意@@如何变成单个@,我确信在弄清楚第一步之后我可以处理这个操作。

最佳答案

您可以添加另一个组并匹配非 @ 的内容:

/(^|[^@])@([a-z0-9]+)/

然后在替换中恢复组 1,如下:

var result = input.replace(/(^|[^@])@([a-z0-9]+)/g, function (_, before, name) {
return before + swap[name];
});

但是,这使得表示 @@@somevariable 变得不可能,所以我建议您创建一些规则:

var TOKEN = /@@|@([a-z0-9]+)|[^@]+|@/g;
var result = '';
var m;

while (m = TOKEN.exec(input)) {
if (m[0] === '@@') {
result += '@';
} else if (m[1]) {
result += swap[m[1]];
} else {
result += m[0];
}
}

当然,您可能永远不需要它......

关于javascript - 查找并替换@foo的实例,但不替换@@foo的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23277150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com