RegEx匹配字符串开头或空格后的#标签

时间:2014-01-21 13:40:45

标签: javascript regex

我查看过以前的问题和答案,但是他们没有解决以下问题:

https://stackoverflow.com/questions/ask#notHashTag

我最接近的是:(^#|(?:\s)#)(\w+),它在一半必要的情况下找到主题标签,并且还包括返回文本中的前导空格。以下是需要匹配的所有案例:

#hashtag
a #hashtag
a #hashtag world
cool.#hashtag
##hashtag, but only until the comma and starting at second hash
#hashtag#hashtag two separate matches

应该跳过这些:

https://stackoverflow.com/questions/ask#notHashTag
Word#notHashTag
#ab is too short to be a hashtag, 3 characters minimum

2 个答案:

答案 0 :(得分:2)

这应该适用于除#hashtag#duplicates以外的所有内容,并且由于JS不支持lookbehind,因此可能无法自行匹配。

\B#\w{3,}

\B旨在仅匹配两个单词字符或两个非单词字符。由于#是非单词字符,因此强制匹配前面有空格或标点符号或字符串的开头。

答案 1 :(得分:0)

试试这个正则表达式:

(?:^|[\s.])(#+\w{3,})(#+\w{3,})?

在线演示:http://regex101.com/r/kG1nD5