регистронезависимое совпадение в Javascript - PullRequest
3 голосов
/ 19 июня 2011

У меня есть это выражение: match('(\.jpg|\.jpeg|\.png|\.gif)$')

как мне также сопоставить JPG, Jpg, jPG и т. Д.?

Ответы [ 3 ]

6 голосов
/ 19 июня 2011

Следующее RE рассматривает имена как file.GIF и file.gif как изображения, но не .gif или file.htm:

var file = "image.png";
if (/.+\.(jpg|jpeg|png|gif)$/i.test(file)) {
    alert("The file is an image")
}

/.+\.(jpg|jpeg|png|gif)$/i является регулярным выражением, а regex.test(string) возвращает true, если string соответствует, и false в противном случае.

  • / - начало RE
  • .+ - соответствует одному или нескольким символам, например, file в file.ext
  • \. - соответствует буквальной точке
  • (jpg|jpeg|png|gif) - совпадения jpg, jpeg, png или gif
  • $ отмечает конец имени файла
  • / - соответствует концу RE
  • i - i Гноре

См. Также http://www.regular -expressions.info / javascript.html

4 голосов
/ 19 июня 2011

Вам нужно добавить флаг i, чтобы отметить его как регистр- i nsensitive:

match(/.../i)
2 голосов
/ 19 июня 2011

Вам нужно указать i модификатор

/ i делает регистр совпадений нечувствительным к регистру.

Таким образом, любая строка, заканчивающаяся этими расширениями, будет соответствовать независимо от регистра букв.

С учетом следующей строки: ".jPg"

/\.(jpe?g|gif|png)$/i       // matches
/\.(jpe?g|gif|png)$/        // doesn't match
/.+\.(jpe?g|gif|png)$/i     // doesn't match (requires filename)

См. Пример на gskinner

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...