Используйте RegEx для проверки строки хештега в js - PullRequest
0 голосов
/ 03 февраля 2020

В моем приложении есть текстовое поле, где люди могут вставлять теги, которые они хотят связать с чем-либо. Я не волшебник регулярных выражений, поэтому я искал решения, и мне это нравится:

/^#\w+$/ ср c

Отлично работает с строка, содержащая только один тег, например, "#something", но не работает для "#some1 #some2", я использую функцию .match() в javascript, чтобы проверить правильность строки.

Как я могу написать это так он работает для следующих примеров:

  • "#tag1"
  • "#tag1 #tag2 "
  • "#tag_space #tagNoSpace #numbres456!"

Но не работает для них:

  • "#first #" - без символов после #

  • "#first second" - нет # на второй фразе

  • "" - пусто

  • "tag" - нет # на фразе

  • "#second#first" - без пробелов между фразами

  • "#this_has_a_#_in_it" - содержит # во фразе

Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Если вы хотите использовать якоря, вы можете сопоставить хэш-тег с последующим сопоставлением без пробелов или хэш-тегов. Затем повторите совпадение 0 или более раз с пробелом, используя группу без захвата (?:

Шаблон может выглядеть следующим образом:

^#[^#\s]+(?: #[^#\s]+)*$

Regex demo

0 голосов
/ 03 февраля 2020

Измените ваш шаблон немного, чтобы любой (a) символ слова (\w) или ди git (\d) мог содержать ваш хэштег:

/^#[\w\d]+$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...