RegEx для сопоставления с определенным шаблоном HTML Entity (Emoji) - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю в этом регулярном выражении, чтобы точно соответствовать следующему шаблону.Проблема в том, что если он превышен, шаблон не должен учитываться:

Я хочу ровно 6 цифр, начинающихся с #, но если я напишу {5}, вернется true.Тогда то же самое происходит с;Я хочу ровно одного и быть в конце.Кроме того, я не знаю, как использовать здесь $ для указания последнего символа.

 if(preg_match(('/^(#)+([0-9]{6}){1}(;)/'),"#128515;")){
     return true;
  }

ДОЛЖЕН БЫТЬ В ЭТОМ ФОРМАТЕ:

#128515; for #DDDDDD; not ##DDDD;; 

Ровно 6 цифр начинаются с одной # и заканчивайте одним ;

1 Ответ

1 голос
/ 30 апреля 2019

preg_match вернет 1, когда он соответствует заданному предмету, и если у вас есть 6 цифр, он может совпадать и с 5, когда нет конечной точки с запятой, поскольку нет конечной установленной границы.

Вы можете добавить якоря ^ и $, чтобы утверждать начало и конец строки, чтобы она точно соответствовала 6 цифрам.

Из вашего паттерна вы можете опустить {1}, поскольку группа уже соответствует 1 раз. Если вы не ссылаетесь на группы в коде, вы также можете пропустить их и указать только совпадение.

Вы можете использовать:

^#[0-9]{6};$
  • ^ Начало строки
  • # Матч №
  • [0-9]{6}; Совпадение 6 цифр
  • $ Подтвердить конец строки

Ваш код может выглядеть как

if(preg_match(('/^#[0-9]{6};$/'),"#128515;")){
    return true;
}
...