Проблема с кавычкой в регулярном выражении
Товарищи!
Необходимо проанализировать выражение вида <img id="someId" src="somePlace/someImage.jpg" height="xxx" width="xxx"> с тем, чтобы поменять путь somePlace на некоторый другой. Если использовать выражение /(src=['"])[^'"]*(?=\/[a-z0-9_]+\.[jpg|png|gif])/gi, все работает как положено. Однако если добавить кавычку в конец выражения любым из следующих образов: /(src=['"])[^'"]*(?=\/[a-z0-9_]+\.[jpg|png|gif])"/gi, /(src=['"])[^'"]*(?=\/[a-z0-9_]+\.[jpg|png|gif]")/gi, регулярное выражение перестает искаться. При этом парадокс в том, что, если кавычку поставить прямо за расширениями файлов: /(src=['"])[^'"]*(?=\/[a-z0-9_]+\.[jpg"|png"|gif"])/gi, выражение ищется нормально. Очень хочется разобраться, в чем же тут дело. |
Цитата:
|
Попробовал так:
/(src=['"])[^'"]*(?=\/[a-z0-9_]+\.[(jpg)|(png)|(gif)])/gi и проверил так: /(src=['"])[^'"]*(?=\/[a-z0-9_]+\.([(jpg)|(png)|(gif)]))/gi. На примере jpg увидел, что захватывается только одна буква j. Судя по всему, группировать надо как-то по-другому. Пробовал вариант без захвата выражения в скобках (?:something), но не помогло. Кроме того, проблема с кавычкой осталась... |
Зачем вы квадратные скобки ставите?
|
попробуй так
var str = '<img id="someId" src="somePlace/someImage.jpg" height="xxx" width="xxx">'; alert(/(src=(['"])([^'"]*)\/\w+?\.(jpg|png|gif)\2)/gi.exec(str)[3]) var str = '<img id="someId" src="somePlace2/someImage.png" height="xxx" width="xxx">'; alert(/(src=(['"])([^'"]*)\/\w+?\.(jpg|png|gif)\2)/gi.exec(str)[3]) var str = '<img id="someId" src="somePlace3/someImage.gif" height="xxx" width="xxx">'; alert(/(src=(['"])([^'"]*)\/\w+?\.(jpg|png|gif)\2)/gi.exec(str)[3]) |
Цитата:
Спасибо всем за помощь! |
Часовой пояс GMT +3, время: 20:49. |