javascript - 我如何编写一个正则表达式来查找@xyz @xyz asdf?
问题描述
我正在尝试在 js 中编写一个正则表达式来查找测试字符串,测试字符串是“@xyz @xyz asdf”,它不应该检测纯文本。我正在尝试
/\s+([@][\w_-]+[\s]{0,1}([A-Za-z0-9@.]+))/
解决方案
我不确定你到底问了什么,但根据你提供的正则表达式,一个小的修改就足够了:
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;
推荐阅读
- c++ - QPainter 旋转会阻止正确的 QPixmap 渲染
- iis - 为什么 w3wp.exe 会通过我的 dotnetcore api 路径查找 web.config?
- javascript - 将 JSON 数据转换为 React 中的选择下拉列表
- google-api - Google 日历 API,带有 MaxResult 的 EventList,在 Microsoft Flow 中不可用
- google-apps-script - 相当于 VBA BeforeDoubleClick 的 Google 脚本?
- python - Python:从 xlsx 读取的列的平均值
- java - 冒泡排序交换方法说明
- kubernetes - 澄清 Kubernetes QoS 与调度的关系
- google-chrome - Youtube在一定时间后挂起
- mysql - Google Cloud Platform SQL 数据库创建