Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (https://javascript.ru/forum/misc/24039-regulyarnoe-vyrazhenie.html)

Andrei 16.12.2011 08:14

Регулярное выражение
 
Здравствуйте!

Нужно разбить запрос вида (календарь.png,jpg,gif) на две части календарь и png,jpg,gif, я с регулярными выражениями не очень, вот мой вариант, подскажите может можно лучше ?

if ( /\.(.+)/.test(query) ){
     found = query.match(/(.+)\.(.+)/i);
     query = found[1];
     ext = found[2];
}

devote 16.12.2011 08:31

var s = 'календарь.png,jpg,gif'.split(".");
alert( s[0] );
alert( s[1] );

Andrei 16.12.2011 09:54

Точек в запросе может быть несколько, и запрос может быть просто календарь

Тогда наверное так ?

if ( /\.(.+)/.test(query) ){
      var query_part = query.split('.').reverse();
            
      ext = query_part[0].replace(/\s+/g,'');
      query_part.shift();
      query = query_part.reverse().join('.');
}


Может лучше регулярка ?

Serg_pnz 16.12.2011 10:19

(/(.+)\.(jpg|gif|png|jpeg)$/i)

В ситаксисе, простите пхп. Знак доллара - конец строки, так как может быть хорощий.календарь.jpg

Andrei 17.12.2011 09:02

/(.+)\.(.+)$/i -мне наверное такое пойдет, там много расширений неохота все перебирать. Как указать во второй скобки что любые символы в количестве от 3 до 4 символов?

рони 17.12.2011 18:15

Цитата:

Сообщение от Andrei
/(.+)\.(.+)$/i -мне наверное такое пойдет, там много расширений неохота все перебирать. Как указать во второй скобки что любые символы в количестве от 3 до 4 символов?

/(.+)\.(.{3,4})$/

Serg_pnz 17.12.2011 22:28

Andrei,
http://wdh.suncloud.ru/perl04.htm

Andrei 18.12.2011 13:40

Всем спасибо, буду пробовать!

KingStar 06.01.2012 22:56

Подскажите, мне нужно сделать проверку на число. Число может быть целое, а может быть и нет. Мне нужно в строке сделать проверку чтобы точка была одна:

вот мой пример, что не так???:

var num1 = '123';
var num2 = '12.3';

reg=/^(\d+).?(\d+)$/;

res1 = reg.test(num1);
res2 = reg.test(num2);

if(res1==false || res2==false) { alert('ТРА-ТА-ТА'); }

nerv_ 06.01.2012 23:46

var x = /^\d+$|^\d+\.\d+$/; // x или x.x

alert(x.test("125.1546")); // true
alert(x.test("125..1546")); //false
alert(x.test("125.")); // false
alert(x.test("125")); // true


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