Regex 正则表达式:查找@和第一个出现的空格/符号之间的文本

Regex 正则表达式:查找@和第一个出现的空格/符号之间的文本,regex,Regex,我在寻找一种在字符串中找到模式的方法 输入是:您能为我@jdoe做这件事吗? 预期结果:@jdoe 要求: 需要以@符号开头 需要在空格或特殊字符处停止,如、你好@jdoe,你好吗? 还需要在句末停止,如hello@jdoe 最小长度在@符号后为1个字符 @sign后面的字符是a-z或a-z或两者 我现在得到的是:@([^”]*)([^\s]+) 这个正则表达式确实以@符号开始,在空格后停止,但每当我在第一个空格符号后继续键入时,它就会继续。有人能帮我找到一种方法来创建一个符合我要求的正则表

我在寻找一种在字符串中找到模式的方法

输入是:
您能为我@jdoe做这件事吗?

预期结果:
@jdoe

要求:

  • 需要以@符号开头
  • 需要在空格或特殊字符处停止,如、
    你好@jdoe,你好吗?
  • 还需要在句末停止,如
    hello@jdoe
  • 最小长度在@符号后为1个字符
  • @sign后面的字符是a-z或a-z或两者
我现在得到的是:
@([^”]*)([^\s]+)


这个正则表达式确实以@符号开始,在空格后停止,但每当我在第一个空格符号后继续键入时,它就会继续。有人能帮我找到一种方法来创建一个符合我要求的正则表达式吗?

这里有一个可以快速使用的正则表达式:

@\w+

请注意\w与a-z a-z 0-9和z匹配

如果您只需要a-z a-z,可以使用:

@[a-zA-Z]+

如果您不希望“Hello@test1”成为匹配项(@test),可以使用负前瞻:


@[a-zA-Z]+(?!\w)

这里有一个正则表达式条件,您可以尝试解决您的问题,它会在语句中有@时触发,并在空格或语句结尾后停止

str.lastIndexOf(`@`)!=-1&&/^\S*$/ig.test(str.substring(str.lastIndexOf(`@`)+1,str.length))


上述代码与js兼容,您可以更改任何语言的基本功能。

试试
@\S+\b
。这些是Twitter上提到的吗?@WiktorStribiżew可能@[a-zA-Z]+\b会更好吗?防止匹配类似的东西@#a@Marathon55我不知道在目前的情况下,OP解析XML/HTML代码有什么更好的地方,但这并不完全正确。我不知道提取字符串的真正规格是什么。也许,
@\w+
是最好的。