我需要一些帮助来找出用于识别“主题标签”的 JS 正则表达式,它们应该匹配以下所有内容:
- 通常的推特风格标签:
#foobar
- 带有文字的标签:
abc123#xyz456
- 带有空格的标签,表示为:(
#[foo bar]
即 [] 用作标签的分隔符)
对于 1 和 2,我使用了以下形式:
var all_re =/\S*#\S+/gi;
我似乎无法弄清楚如何将其扩展到 3。我不擅长正则表达式,请帮忙?
谢谢!
我需要一些帮助来找出用于识别“主题标签”的 JS 正则表达式,它们应该匹配以下所有内容:
#foobar
abc123#xyz456
#[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
就那么简单。