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

时间:2017-12-07 11:28:59

标签: regex

我正在寻找一种在字符串中查找模式的方法。

输入为:Could you do that for me @jdoe?

预期结果:@jdoe

要求:

  • 需要以@ sign
  • 开头
  • 需要停留在太空或特殊角色,如。?! hello @jdoe, how are you?
  • 还需要在hello @jdoe
  • 之类的句子结尾处停止
  • @符号为1个字符后的最小长度
  • @符号后面的字符是a-z或A-Z或两者

目前我得到的是:@([^"]*)([^\s]+)

这个正则表达式以@符号开头,在空格后停止,但每当我在第一个出现的空格符号后继续输入时继续。有人可以帮我试图找到一种方法来创建一个符合我要求的正则表达式吗?

2 个答案:

答案 0 :(得分:0)

这是一个你可以玩的快速:

@\w+

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

请注意\ w匹配a-z A-Z 0-9和_。

如果您只想要a-z A-Z,可以使用:

@[a-zA-Z]+

如果您不希望'Hello @ test1'成为匹配(@test),您可以使用否定前瞻:

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

答案 1 :(得分:0)

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

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

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