regex 用于社交媒体的@username正则表达式

nlejzf6q  于 2022-12-01  发布在  其他
关注(0)|答案(2)|浏览(78)

我是一个相对较新的使用正则表达式与JavaScript和遇到一个特殊的情况有关的'@'用户名模式给了我大约3个小时的麻烦。
我想复制在Facebook和Twitter等网站的社交媒体文本字段中找到的@username模式。(我知道它们解析标记化的宏,但我想使用纯RegEx版本)。
我已经附上了一个图像的最接近的模式,我已经实现,但我也将类型,以使它更容易为任何人复制和粘贴到自己的RegEx模式检查器。
正如您所看到的,@符号应该捕获所有后续的字母字符,并且在@符号之前不包含任何字符,并以空格结束。在一个特殊情况下,包含@符号的URL应该被忽略。(如图所示)并且@符号可以在文本字段的最开始使用,在这种情况下,句柄应该被解析。
显然,我现有的模式是收集@符号前面的字符,这是不正确的。任何帮助都是非常好的。

RegEx 101示例(带突出显示)

无法运作的RegEx

/(^^|[^\/])(@[A-Za-z0-9_.]{3,25})/gm

方便复制和粘贴的文本版本

@test testing
 @test testing
testing ,@test
https://youtube.com/@test

我在3个小时内尝试了多种模式组合,试图分离出流行社交网络中的@handle样式标签。我希望能够只分离出包含单个@分隔用户名的模式部分。我希望可以忽略作为URL一部分的模式。
我的实际结果导致前面的字符被收集并添加到不正确的最终字符串中。

vqlkdk9b

vqlkdk9b1#

听起来你想要一个积极的观察
第一个

68de4m5k

68de4m5k2#

我知道你已经接受了一个答案,但这里有另一个版本,可能适用于你正在尝试做的事情。

/(?<=[^\/]|^)@[A-Za-z0-9_.]{3,25}/g

这和任何...

  • 位于行首前面没有正斜杠(/
  • 感谢@Samathingamajig指出这一点。
  • @符号开头
  • 后跟3到25个字母数字字符(包括_.)。

相关问题