Javascript 正则表达式,用于匹配类似 Twitter 的主题标签

Javascript regex for matching twitter-like hashtags

本文关键字:Twitter 标签 正则表达式 用于 Javascript      更新时间:2023-09-26

我需要一些帮助来找出用于识别"主题标签"的 JS 正则表达式,它们应该与以下所有内容匹配:

  1. 通常的推特风格标签:#foobar
  2. 文本前面的主题标签:abc123#xyz456
  3. 带有空格的主题标签,表示为:#[foo bar](即 [] 用作主题标签的分隔符)

对于 1 和 2,我使用以下形式:

var all_re =/'S*#'S+/gi;

我似乎无法弄清楚如何将其扩展到 3。我不擅长正则表达式,请帮忙吗?

谢谢!

因此,

它必须匹配所有非空格字符或[]之间的任何字符(包括):

'S*#(?:'[[^']]+']|'S+)

解释:

'S*                # any number of non-white space characters
#                  # matches #
(?:                # start non-capturing group
    '[             # matches [
    [^']]+         # any character but ], one or more
    ']             # matches ]
    |              # OR
    'S+            # one or more non-white space characters
)                  # end non-capturing group

参考:交替,否定字符类。

这个怎么样?

var all_re =/('S*#'[[^']]+'])|('S*#'S+)/gi;

我遇到了类似的问题,但只想匹配字符串何时以主题标签开头和结尾。所以类似的问题,希望其他人可以使用我的解决方案。

这个匹配"#myhashtag",但不匹配"gfd#myhashtag"或"#myhashtag"。

/^#'S+$/

^ #start of regex
'S #Any char that is not a white space
+ #Any number of said char
$ #End of string

就这么简单。