Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярное в поиске файла (https://javascript.ru/forum/misc/50561-regulyarnoe-v-poiske-fajjla.html)

Maxfashko 01.10.2014 20:55

регулярное в поиске файла
 
Добрый вечер. Мозг под ночь совсем не может понять одну вещь. Прошу помощи!

есть файлы типа :
IMG_0013.jpg,
13.jpg,
34.jpg,
0034.jpg,
065.png,
SER_065.png,
Anf54.jpe

Мне нужно найти файл 0013. Но не знаю его префикса (IMG_ или любые другие буквы перед номером) и есть ли префикс вообще.
необходимо чтобы регулярка нашла этот файл.

Так же к примеру мне нужен файл с номером 34. Не учитывая в поиске, что есть файл с именем 0034.
То же касается поиска файла 13, не находя файл IMG_0013.

Придумал только так, но это убожно....... префикс (буквы перед номером) не ищет и другие символы.

regexp = new RegExp (number+"\.(jpg|jpe|jpeg|png)"+"$","gi");
if (regexp.test (file))al("yes")


Ребята это реально ? :-?

ksa 01.10.2014 21:04

Цитата:

Сообщение от Maxfashko
Ребята это реально ?

Да. :yes:
Как вариант...

var str='IMG_0013.jpg';
// Проверка на 0013
if (str.search(/0013(?=\.)/) != -1) {
	alert('Ok');
};
str='IMG_0013.jpg';
// Проверка на 13
if (str.search(/(^|[^\d])13(?=\.)/) != -1) {
	alert('Ok');
} else {
	alert('No');
};

Aetae 01.10.2014 21:51

regexp = new RegExp ('(^|\\D)' + number + '\\.(jpg|jpe|jpeg|png)$','i');
if (regexp.test (file))al("yes")

Maxfashko 02.10.2014 05:09

Спасибо! )

Maxfashko 02.10.2014 05:11

Цитата:

Сообщение от Aetae (Сообщение 333030)
regexp = new RegExp ('(^|\\D)' + number + '\\.(jpg|jpe|jpeg|png)$','i');
if (regexp.test (file))al("yes")

что означает двойной слэш? Я как понимаю мы ищем (начало или нецифровые символы)

Aetae 02.10.2014 07:20

Maxfashko, двойной слэш потому что тут мы имеем дело со строкой которую преобразуем в regexp, по этому теребуется "экранировать символ экранирования".)


new RegExp(
'\\D' //строка
) 
// ->
/\D/ //regexp
// ->
[^0-9] //то что ищем на самом деле

Если же написать new RegExp ('\D') то получим мы new RegExp ([экранированный символ D]), а поскольку для строки "D" не является спецсимволом, то экранированный "D" - это то же самое, что и обычный "D", т.е. запись new RegExp ('\.') - на деле то же самое, что и new RegExp ('.') .

Maxfashko 02.10.2014 08:48

По-человечески благодарю (и + в карму):)


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