Javascript 文本中提到的多个用户名的正则表达式

Javascript 文本中提到的多个用户名的正则表达式,javascript,node.js,regex,Javascript,Node.js,Regex,这是我的用户名正则表达式: /^(?=.{3,20}$)[A-Za-z][A-Za-z0-9]+(?:[.|_][A-Za-z0-9]+)*$/i 它正确地匹配单个用户名,如tom.hardy。但是我想用前面的@字符匹配多个用户名。如下文所示: const text = "Hello @tom.hardy have you met with @john.deo1"; 附言:请不要推荐npm 试试这个: const text = "Hello @tom.hardy have you met w

这是我的用户名正则表达式:

/^(?=.{3,20}$)[A-Za-z][A-Za-z0-9]+(?:[.|_][A-Za-z0-9]+)*$/i
它正确地匹配单个用户名,如
tom.hardy
。但是我想用前面的
@
字符匹配多个用户名。如下文所示:

const text = "Hello @tom.hardy have you met with @john.deo1";
附言:请不要推荐npm

试试这个:

const text = "Hello @tom.hardy have you met with @john.deo1";
var pattern = /@[A-Za-z0-9._-]*/g;
const username = text.match(pattern); // ["@tom.hardy", "@john.deo1"]

只需在正则表达式的开头添加
@

由于不区分大小写的标志,我还删除了用于在字符串和简化大小写中匹配的锚

var text=“你好@tom.hardy你见过@john.deo1”吗;
变量模式=/@(?=.{3,20}(?:\s |$)[a-z][a-z0-9]+(?:[.|][a-z0-9]+)?/ig;
var usernames=text.match(模式);

console.log(用户名)只需在您的regexp前面添加一个'@'匹配?
[@][a-Za-z][a-Za-z0-9]+(?:[.|][a-Za-z0-9]+)*
我已经尝试过了。它的工作没有用户名字符限制。用户名字符限制最小为3个,最大为20I用户名字符限制最小为3个,最大为20个