gpt4 book ai didi

javascript - 为什么这个 @mention 正则表达式不起作用?

转载 作者:行者123 更新时间:2023-11-28 19:59:38 27 4
gpt4 key购买 nike

所以我有这个正则表达式

/(?:[\s.]|^)@(\w+\.?(?:\w+))/g

这错误地给出了提及之前的句号 - 例如

.@blah.

是否匹配并捕获了前面的句号。

此外,当我这样做时 -

句子结束。@foo.句子开始

它捕获.@foo.Start

当我希望它只捕获@foo时

当我有这个正则表达式时 -

/(?:\s|^)@(\w+\.?(?:\w+))/g

所有情况都有效,除了

.@foo. and End of sentence.@foo.Start of sentence

在这些情况下,没有任何内容匹配。

我应该如何更改这个正则表达式?

代码(虽然我不太确定为什么这会有帮助)

text.replace(/(?:\s|^)@(\w+\.?(?:\w+))/g, function(match, p1) {
var text = match,
link = '/' + $.trim(text).slice(1);
return '<a href="' + link + '" target="_blank">' + text + "</a>";
});

编辑-清晰度

好吧,我想上面的内容并不清楚。

如果我有这句话bladi bladh.@praks5432.Bladi blah
我想捕获@praks5432

如果我有这句话bladi bladh.@praks5432
我想捕获@praks5432

如果我有@praks5432..
我想捕获@praks5432

如果我有.@praks5432。
我想捕获@praks5432

最佳答案

如果您只想获取匹配字符串中捕获的组,请不要使用 g 标志:

".@blah.".match(/(?:[\s.]|^)@(\w+)/)

给出

[".@blah", "blah"]

所以你只需使用索引 1 处的元素即可。

关于javascript - 为什么这个 @mention 正则表达式不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889395/

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