首页 > 解决方案 > 我如何编写一个正则表达式来查找@xyz @xyz asdf?

问题描述

我正在尝试在 js 中编写一个正则表达式来查找测试字符串,测试字符串是“@xyz @xyz asdf”,它不应该检测纯文本。我正在尝试

/\s+([@][\w_-]+[\s]{0,1}([A-Za-z0-9@.]+))/

标签: javascript

解决方案


我不确定你到底问了什么,但根据你提供的正则表达式,一个小的修改就足够了:

var rgx = /\s*@\w+\s?(?:\w|@)+\b/i;

https://regex101.com/r/X89dpx/1/

或者如果第二个单词必须有@:

var rgx = /@\w+\s?(?![^@]+)[^\s]*/gi;
"some long sentence @xyz @xyz asdf".match(rgx);//["@xyz @xyz"]

如果您想单独匹配@somename lastname:

var rgx  = /@\w+\s?(?=[^@]+)[^\s]*/gi;

https://regex101.com/r/mBt2wH/2/

可以更简洁一点:

var rgx = /@\w+(?:\s[^\s@]+)?/gi;

https://regex101.com/r/mBt2wH/3/


推荐阅读