Ответы пользователя по тегу Регулярные выражения
  • Как составить регулярное выражение?

    @daniil14056
    У меня вот так вышло
    var str="(01) [Ляпис Трубецкой] Золотая Антилопа";
    var pattern='\\((\\d\\d)\\)\\s*([^\\]]+\\])\\s+([А-Яа-яA-Za-z]+\\s+[А-Яа-яA-Za-z]+)';
    var match=str.match(pattern);
    console.log(match[1]+"."+match[3]);
    Ответ написан
    Комментировать
  • Как заменить текст с помощью регулярных выражений в jQuery?

    @daniil14056
    Регулярные выражения нужны при парсинге страницы, и извлечении информации, а jQuery это уже работа с dom этой страницы
    Вот ууделил времени, без JQuery изменяем текст, к примеру шаблон какой-то, пришедший с сервера и добавляем в документ.
    /**
     * Изменяет по шаблону все найденные совпадения
     * @param htmlcode    страница которую нужно изменить
     * @param listReplace  список значений для изменения найденных
     * @param pattern      паттерн регулярное выражения поиска
     * @param globalFind   нужно ли изменять все значения или только одно
     * @returns {*|string|void}  возращаяет изменненный текст html документа
     */
    function  replaceToken(htmlcode, listReplace,pattern, globalFind = true) {
        /**
         * Получает список токенов, которыми нужно заменить
         * Возращает заряженный генератор с списком по порядку выражений замены,
         * каждый раз будет возращать новое значение замены, список может быть прислан с сервера,
         * в случаее если найденных значений будет больше, то он не чего не измениn. Выражение "$&"
         * не изменяет найденое вхождение
         * @param list_tokens - массив- список значений которыми нужно заменить всякие 0x23423j343/
         * @returns {{generator: generaterSReplace}} возвращает генератор, который каждый раз будет возвращать следующие значения для замены 
         */
        function  loadGenerator(list_tokens) {
            return {
                generator: function* generaterSReplace() {
                    for(let i=0; i<list_tokens.length;i++)
                        yield list_tokens[i];
                    return "$&";
                }
            }
        }
    
        let generator=loadGenerator(list_tokens).generator();
        let reg;
        if(globalFind || listReplace instanceof Array)
            reg =new RegExp(pattern,["mg"]);
        else
             reg=new RegExp(pattern,["m"]);
    
        return res =htmlcode.replace(reg,function(str1,str2){
            return str1.replace(str2,generator.next().value);
        });
    
    }/****************TEST-------------------------TEST***********************************/
    var list_tokens=["1234567890","0987654321"];  // значения для замены, то есть html документ к примеру шаблон присланный с сервера или исходный текст самой страницы к примеру  
    //                  var htmlCode; 
    //                  $.get(document.location.href, function(data){htmlCode=data.data});
    let html='разные там <b>html</b>елементы. А вот и трока поиска: </b><b id="finish_kar_cri">0x61496a395F549XzxzxZ</b>....' +
        'a вот  еще один такой же элемент(предположим что там class а не id для массового поиска)'
        +'<b id="finish_kar_cri">0x323232323</b>...';
    
    let pattern='<b id="finish_kar_cri">(\\w+)</b>'; // ваша строка поиска в скобках значениыя ддля замены
    var res=replaceToken(html,list_tokens,pattern);   // возвращаем имененную строку
             $(document).append(res);        // console.log(res)// результат, измененная   текст с вашим токеном


    А это просто работа с самим текущим документов jquery
    // token[1] - и будет найденным текстом
    var ell=$("#finish_kar_cri");
    var lastVal=ell.text(); // запомнили старое значение
    ell.text("8496444");
    Ответ написан
    Комментировать