使用 JavaScript 获取字符串中 @char 旁边的文本

2023-12-20

我正在基于 React 的聊天应用程序中实现提及机制。当用户在文本区域中键入 @ 时,我将打开该组成员的列表,并使用 @ 字符后面的文本在该列表中执行搜索。搜索查询提取的代码如下:

const regexp = /@(\S+)/g;
const text = regexp.exec(message);
let mentionText = '';
mentionText = text ? text[0] : '@';

仅当字符串中有 1 个 @ 字符时,此方法才有效。例如,如果在打开成员列表的 @ 字符之前的消息文本中写入了一封电子邮件,则这将不起作用,因为我正在获取数组中的第一项,即电子邮件。

是否有更好/更优雅/更好的工作方式来从输入的字符串中获取搜索词?例如,我基本上需要获取 @ char 之后的文本,它不是电子邮件。是的,更准确地说 - @ char 之前的文本有一个标题空间。这样我就可以确定用户想要写一个提及。基本上我认为应该是这样的 @。如果旁边有一个空格和一个 @ 符号 - 用户正在写一个提及。问题是如何识别 @- 有标题空间。

Thanks!


RegEx 有一个内部参数,用于存储最后一个匹配索引,以便下次运行它时,您可以获得下一个匹配项。只需在 while 循环中继续运行正则表达式即可。

const message = "@player with player@email went to @place."

const regexp = /@(\S+)/g;
const mentions = [];
let text;
while (text = regexp.exec(message)) {
    let mentionText = '';
    mentionText = text ? text[1] : '@';
    mentions.push(mentionText)
}
console.log("mentions", mentions)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JavaScript 获取字符串中 @char 旁边的文本 的相关文章

随机推荐