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

rag*_*was 8 javascript regex

我想帮助找出用于识别"hashtags"的JS正则表达式,它们应该匹配以下所有内容:

  1. 通常的twitter风格标签: #foobar
  2. 带有文字的Hashtags: abc123#xyz456
  3. 带有空格的 Hashtags,表示为:( #[foo bar]即,[]用作#标签的分隔符)

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

var all_re =/\S*#\S+/gi;
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚如何将它扩展到3.我不擅长正则表达式,有些帮助吗?

谢谢!

Fel*_*ing 31

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

\S*#(?:\[[^\]]+\]|\S+)
Run Code Online (Sandbox Code Playgroud)

说明:

\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
Run Code Online (Sandbox Code Playgroud)

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