Мне нужна помощь для написания шаблона регулярных выражений для следующих условий:
Ограничения на символы хэштега
Длина
Вам нужно только добавить # перед словом, чтобы сделать его хэштегом.Однако, поскольку твит может содержать не более 140 символов, лучшими хэштегами являются те, которые состоят из одного слова или нескольких букв.Эксперты Twitter рекомендуют хранить ключевое слово в количестве не более 6 символов.
Используйте только цифры и буквы в своем ключевом слове.Вы можете использовать подчеркивание, но делать это экономно по эстетическим соображениям.Дефисы и тире не будут работать.
Без пробелов
Хештеги не поддерживают пробелы.Так что, если вы используете два слова, пропустите пробел.Например, хэштеги для следующих выборов в США помечены как #USelection, а не выборы в долларах США.
Без специальных символов
Хештеги работают только со знаком #.Специальные символы, такие как "!, $,%, ^, &, *, +,."не будет работать.Twitter распознает знак фунта, а затем преобразует хэштег в интерактивную ссылку.
Хеш-теги могут начинаться с цифр
Хештеги могут быть на любом языке
Хештеги могут быть смайликами или символами
Мне пришла в голову такая идея, но она не включает в себя два последних условия:
const subStr = postText.split(/(?=[\s:#,+/][a-zA-Z\d]+)(#+\w{2,})/gm);
const result = _.filter(subStr, word => word.startsWith('#')).map(hashTag => hashTag.substr(1)) || [];
РЕДАКТИРОВАТЬ:
Пример: Если у меня есть:
const postText = "#hello12#123 #hi #£hihi #This is #? #Hyvääpäivää #Dzieńdobry #जलवायुपरिवर्तन an #example of some text with #hash-tags - http://www.example.com/#anchor but dont want the link,#hashtag1,hi #123 hfg skjdf kjsdhf jsdhf kjhsdf kjhsdf khdsf kjhsdf kjhdsf hjjhjhf kjhsdjhd kjhsdfkjhsd #lasthashtag";
Результат должен быть:
["hello12", "123", "hi", "This", "?", "Hyvääpäivää", "Dzieńdobry", "जलवायुपरिवर्तन", "example", "hash", "anchor", "hashtag1", "123", "lasthashtag"]
Что у меня сейчас:
["hello12", "123", "hi", "This", "Hyv", "Dzie", "example", "hash", "anchor", "hashtag1", "123", "lasthashtag"]
Примечание: я не хочу использовать библиотеку JavaScript.
Спасибо