Как написать регулярное выражение PHP, которое соответствует необязательной подстроке? - PullRequest
1 голос
/ 12 апреля 2011

ОК, теперь У меня две проблемы .

У меня есть список имен файлов.Некоторые из этих имен могут содержать шестнадцатеричную цветовую ссылку HTML.Как #11AACC.Также меня интересуют только файлы изображений (расширения jpg, jpeg, png, gif и bmp).Поэтому я хотел бы, чтобы регулярное выражение соответствовало, если расширение файла является одним из указанных выше, плюс, если в строке есть ссылка на цвет HTML, она также будет захвачена.Если есть несколько ссылок, мне все равно, какая из них будет захвачена (должна быть только одна), но одна должна быть захвачена.Больше, чем один, тоже хорошо, я могу просто игнорировать все остальное, кроме первого.Да, и все это должно быть без учета регистра, но это меньше всего забот.

При необходимости я могу ограничить положение эталона цвета.Но тогда я предпочел бы, чтобы это было прямо перед расширением, потому что иначе именование этих файлов было бы неудобно.

Я пытаюсь сделать что-то вроде /(#[a-fA-F]{6})?\.(?:jpeg|jpg|png|gif|bmp)$/i или /(#[a-fA-F]{6})?.*\.(?:jpeg|jpg|png|gif|bmp)$/i, но это не такзахватить ссылку на цвет.

1 Ответ

2 голосов
/ 12 апреля 2011

Это потому, что ваш класс персонажа

[a-fA-F]

которая представляет шестнадцатеричную цифру, отсутствуют цифры?

Попробуйте

[a-fA-F0-9]

Поскольку вы используете модификатор i для учета регистра, вы можете просто использовать:

[a-f0-9]
...