我想帮助找出用于识别“hashtags”的JS正则表达式,它们应该匹配以下所有内容:
#foobar
abc123#xyz456
#[foo bar]
(即[]作为主题标签的分隔符)对于1和2,我使用的是以下形式的东西:
var all_re =/\S*#\S+/gi;
我似乎无法弄清楚如何将它扩展到3.我不擅长正则表达式,请帮忙吗?
谢谢!
答案 0 :(得分:31)
因此,必须匹配所有非空格字符或[
和]
之间的任何字符:
\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
答案 1 :(得分:2)
这个怎么样?
var all_re =/(\S*#\[[^\]]+\])|(\S*#\S+)/gi;
答案 2 :(得分:0)
我遇到了类似的问题,但只想在字符串开头和标签结束时匹配。所以类似的问题,希望其他人可以使用我的解决方案。
这个匹配“#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
这很简单。