/#[a-zA-Z0-9][a-zA-Z0-9 '-]+/
Когда вы сказали, что "# #keyword" должно быть недействительным, я предположил, что вы имеете в виду, что "#" должно быть недопустимым, а "#keyword" должно быть извлечено из этой строки. Первый «ящик» означает, что ключевое слово всегда будет начинаться со строчной буквы, заглавной буквы или цифры. Если это слишком ограничительно, и вы хотите разрешить, например, "# -ключевое слово", просто добавьте тире перед первой квадратной скобкой, например:
/#[a-zA-Z0-9-][a-zA-Z0-9 '-]+/
И чтобы вернуть массив результатов в javascript, примените его к строке, используя модификатор «global» («g» после второй косой черты):
arrayOfKeywords = keywordString.match(/#[a-zA-Z0-9-][a-zA-Z0-9 '-]+/g);
Возможно, вы захотите увидеть этот код на моей тестовой странице . Regular-expressions.info - полезный сайт, чтобы узнать больше о регулярных выражениях. У них также есть интерактивная страница для проверки регулярных выражений , которая может быть полезна при игре.