регулярное в поиске файла
Добрый вечер. Мозг под ночь совсем не может понять одну вещь. Прошу помощи!
есть файлы типа : 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") Ребята это реально ? :-? |
Цитата:
Как вариант... 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'); }; |
regexp = new RegExp ('(^|\\D)' + number + '\\.(jpg|jpe|jpeg|png)$','i'); if (regexp.test (file))al("yes") |
Спасибо! )
|
Цитата:
|
Maxfashko, двойной слэш потому что тут мы имеем дело со строкой которую преобразуем в regexp, по этому теребуется "экранировать символ экранирования".)
new RegExp( '\\D' //строка ) // -> /\D/ //regexp // -> [^0-9] //то что ищем на самом деле Если же написать new RegExp ('\D') то получим мы new RegExp ([экранированный символ D]), а поскольку для строки "D" не является спецсимволом, то экранированный "D" - это то же самое, что и обычный "D", т.е. запись new RegExp ('\.') - на деле то же самое, что и new RegExp ('.') . |
По-человечески благодарю (и + в карму):)
|
Часовой пояс GMT +3, время: 22:33. |