Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   как вставить переменную в правило регулярки (https://javascript.ru/forum/css-html/69596-kak-vstavit-peremennuyu-v-pravilo-regulyarki.html)

prog77 05.07.2017 11:53

как вставить переменную в правило регулярки
 
есть пример не могу правильно вставить переменную в правило регулярки
var month = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря',
        'январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'
    ];
    var monthList =  month.join("|");

    var myString = "12.03.04 июнь 10:00";
    var pattern = /([0-9]{1,4}|monthList)/gi;
    console.log('d');
    var match;
    while (match = pattern.exec(myString)){
        console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]);
    }
в правило /([0-9]{1,4}|monthList)/gi; вместо monthList нужно вставить переменную. не могу понять как это сделать. Спасибо

prog77 05.07.2017 11:58

переменную monthList))

рони 05.07.2017 12:21

prog77,
var month = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря',
        'январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'
    ];
var monthList =  month.join("|");
var pattern  = new RegExp("[0-9]{1,4}\\s*?(" +monthList + ")" ,"g");
var myString = "12.03.04 июнь 10:00";

    var match;
    while ((match = pattern.exec(myString))!= null){
        console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]);
    }

prog77 05.07.2017 13:24

рони,
мне для моей задачи нужно что бы каждое число было отдельно в массиве так же и июнь, просто у меня задача неординарная может ее и можно решить по другому но сейчас нужно так 12 03 04 июнь 10 00 всего 6 ячеек

prog77 05.07.2017 13:29

У вас просту возвращаем месяц и число, а мне нужно все цифры по отдельности в массиве. Конечно желательно вместо месяца сразу вернуть число июнь => 07

рони 05.07.2017 14:02

prog77,
var pattern  = new RegExp("([0-9]{1,4}|" +monthList + ")" ,"g");

рони 05.07.2017 14:04

Цитата:

Сообщение от prog77
июнь => 07

:blink:

рони 05.07.2017 14:23

prog77,
var month = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря',
        'январь','февраль','март','апрель','май','июнь','июль','август','сентябрь','октябрь','ноябрь','декабрь'
    ];
var monthList =  month.join("|");
var pattern  = new RegExp("([0-9]{1,4}|" +monthList + ")" ,"g");
var myString = "12.03.04 июнь 10:00";

    var match = myString.match(pattern).map(function(el) {
    var i = month.indexOf(el);
    return i != -1 ? ("0" + (i % 12 + 1)).substr(-2) : el
});
    alert(match)

prog77 05.07.2017 14:30

да у меня сейчас 8-й месяц идет:D Спасибо большое.


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