Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос по Regexp (https://javascript.ru/forum/misc/2604-vopros-po-regexp.html)

vovasvv 21.01.2009 19:42

вопрос по Regexp
 
Доброго времени суток!

Рассматриваю названия файлов

К примеру у меня есть 2 выражения
1-ое: [\+=\\]+
2-ое: \.(JPG)$

Как составить выражение:

Отобрать только те, в названиях которых до ТОЧКИ - содержится любой из символов + = \ ,после ТОЧКИ с любым расширением КРОМЕ JPG

Знаю что ИСКЛЮЧЕНИЕ работает так [^\+=\\], а вот с круглыми скобками оно работает? (^jpg) - это правильно???? Если нет, то как правильно?
И вообще с точки зрения "граматики" - корректно ли составлять выражение, одна часть которого ищет символы, которые могут находиться в выражении, а вторая - наоборот, ищет символы которые НЕ могут?

Спасибо!

Kolyaj 21.01.2009 20:14

/[+=\\].*\.(?!jpg$)/

Gvozd 21.01.2009 20:31

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

vovasvv 21.01.2009 23:39

to Kolyaj
Если можно, то для тех кто на бронепоезде:
[+=\\] - вопросов нет -сам писал, далее
Точка - любой символ, далее
звездочка - ноль или более повторений [+=\\]. , далее
\. - прописной символ . - означает точку в тексте, далее
?!jpg$ - все это: а именно [+=\\].*\. наедется если в конце НЕ будет стоять jpg

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

Таким образом если я вас правильно понял, то выражение /[+=\\].*\.(?!jpg$)/ не ловит случай, когда файл будет с расширением jpg, НО при этом будет содержать символы - правильно?

to Gvozd: Вы совершенно правы. Как только появится время, обязательно займусь, но пока вынужден пользоваться благами цивилизации и не гнушаюсь запросами вопрос-ответ.

Kolyaj 22.01.2009 00:03

Это
Цитата:

Сообщение от vovasvv
- не хочу чтобы в названии файла содержались символы
-хочу чтобы загружали файлы с расширением jpg

противоречит этому
Цитата:

Сообщение от vovasvv
Отобрать только те, в названиях которых до ТОЧКИ - содержится любой из символов + = \ ,после ТОЧКИ с любым расширением КРОМЕ JPG

Уж определитесь с задачей.

vovasvv 22.01.2009 00:10

Определился - в начале перемудрил.Конечная задача:
не хочу чтобы в названии файла содержались символы
-хочу чтобы файлы содержали ТОЛЬКО расширение jpg|jpeg|JPG|JPEG

Очень хочу чтобы это было в одном выражении (все...больше ничего не хочу :) ). Еще раз спасибо за будущий ответ!

Kolyaj 22.01.2009 00:18

/^[^+=\\]+\.jpe?g$/i

x-yuri 22.01.2009 00:47

вообще-то тебе должно хватить
/\.jpe?g$/i
зачем тебе запрешать пользователю использовать символы?
однажды сам на такое наткнешься и прийдется файл переименовывать


Часовой пояс GMT +3, время: 02:00.