JavaScript - 使用正则表达式匹配非 ASCII 符号

JavaScript - match non-ascii symbols using regex

我想匹配评论中提到的所有用户。示例:

var comment = '@Agneš, @Petar, please take a look at this';
var mentionedUsers = comment.match(/@\w+/g);

console.log(mentionedUsers)

我期待 ["@Agneš", "@Petar"] 但得到 ["@Agne", "@Petar"]。如您所见,š 符号不匹配。

如何匹配包括非 ascii 在内的所有字母符号?

š 不是单词字符,"w" 是单词字符。

在实现 ES6 对正则表达式中的 unicode 的支持之前,您可以使用类似的方法解决它:

/@[^\s,]+/g

您只需列出 不能 在用户名中的内容。明年,

/@\w+/gu

一种确保您不会收到一半电子邮件地址以及@位于单词中间的其他情况的方法是 match(/[^\s,@]*@[^\s,@]+(?=[\s,]|$)/g) 然后 filter 结果他们是否以“@”开头。