регулярное в поиске файла
Добрый вечер. Мозг под ночь совсем не может понять одну вещь. Прошу помощи!
есть файлы типа : 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:50. |