Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.07.2017, 21:50
Аспирант
Отправить личное сообщение для Stenli Посмотреть профиль Найти все сообщения от Stenli
 
Регистрация: 25.06.2017
Сообщений: 36

Подскажите код, который бы искал все даты типа XX.XX.XXXX и заменял их чем-то
Имею textarea, куда вставляю некоторый HTML-код.

jQuery должен в этом тексте найти все фрагменты определенного формата, например, 30.07.2017, и заменить их на, скажем, <div class="vrotego">31.07.2017</div>

Как попросить jQuery найти все однотипные выражения, состоящие из двух цифр точки еще двух цифр точки и четырех цифр?

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2017, 22:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Stenli,
reg = /\d{2}\.\d{2}\.\d{4}/g;
str = " 30.07.2017 30.07.2017"
str = str.replace(reg, '<div class="vrotego">$&</div>');
alert(str)
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2017, 23:25
Аспирант
Отправить личное сообщение для Stenli Посмотреть профиль Найти все сообщения от Stenli
 
Регистрация: 25.06.2017
Сообщений: 36

А если беда такая, что заменить нужно на

<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?>

Я бы сразу так спросил, но совсем не мог подумать, что на выходе в другом textarea у меня вот это <? будет заменяться на вот это <!--?
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2017, 23:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Stenli,
не понимаю
Ответить с цитированием
  #5 (permalink)  
Старый 31.07.2017, 00:02
Аспирант
Отправить личное сообщение для Stenli Посмотреть профиль Найти все сообщения от Stenli
 
Регистрация: 25.06.2017
Сообщений: 36

^) что же я сегодня такой загадочный...

Давайте по-другому:

Мне нужно, чтобы все даты вида xx.xx.xxxx заменялись на
<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?>

То есть все как в первом сообщении. Ваша подсказка работает, только в результате у меня меняется на
<!--?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?-->

Добавляются знаки закомментировывания <!-- -->
[IMG SRC=http://f6.s.qip.ru/~6wVwQIbF.png]

Последний раз редактировалось Stenli, 31.07.2017 в 00:05.
Ответить с цитированием
  #6 (permalink)  
Старый 31.07.2017, 00:12
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от Stenli Посмотреть сообщение
^)
Добавляются знаки закомментировывания <!-- -->
[IMG SRC=http://f6.s.qip.ru/~6wVwQIbF.png]
Это не рони, он не мог так с вами поступить.
Ответить с цитированием
  #7 (permalink)  
Старый 31.07.2017, 00:22
Аспирант
Отправить личное сообщение для Stenli Посмотреть профиль Найти все сообщения от Stenli
 
Регистрация: 25.06.2017
Сообщений: 36

Безусловно. Грешу на свои пальцы из ушей и мозги из пяток.

Тыкал тыкал и понял, что такая подстанова происходит, когда jQuery видит комбинацию "<?". Он решает ее САМ заменить на "<!--?".

Если я знак вопроса первый уберу, то все ставится как надо, не меняется.

Как сделать, чтобы не появлялись знаки комментариев?
Ответить с цитированием
  #8 (permalink)  
Старый 31.07.2017, 00:43
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Jquery тоже не в чем не виноват
<!DOCTYPE HTML>
<head>
</head>
<body>
<div>1<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?></div>
<div>2&lt;?=date(&apos;+&apos;d.m.Y&apos;+&apos;, strtotime(&apos;+&apos;0 day&apos;+&apos;));?&gt;</div>
</body>
</html>

посмотрите код и результат, это браузер виноват!! мы с вами нашли виноватого!
Ответить с цитированием
  #9 (permalink)  
Старый 31.07.2017, 03:26
Аспирант
Отправить личное сообщение для Stenli Посмотреть профиль Найти все сообщения от Stenli
 
Регистрация: 25.06.2017
Сообщений: 36

Это очень и очень странно.

Потому что я пробовал подставить &lt; &gt; но браузер выдал их в таком же неизменном виде.

Кстати, как вы делаете кнопку "Просмотреть"? Чтобы код можно было сразу запустить из сообщения?

Вот, попробуйте с нижепоказанным кодом ввести любую дату формата ДД.ММ.ГГГГ. Получится на выходе
<!--?=date(d.m.Y, strtotime(0 day));?-->

Как победить, ума не приложу.
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="assets/css/bootstrap/bootstrap.min.css">
    <link rel="stylesheet" type="text/css" href="assets/css/main.css">
    <script type="text/javascript" src="assets/js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script type="text/javascript" src="assets/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="assets/js/preland.js"></script>
    <title>Preland convert</title>
</head>

<body>



<div class="container">


    <div class="row">



            <div class="text-center" style="margin-top: 20px;">
                <button type="button" name="sendTo" value="Send to" id="sendTo" class="btn btn-success">Адаптировать</button>
            </div>
            <div class="text-center" style="font-size: 12px; margin: 10px;">Каждый новый текст требует обновления страницы (F5 на клавиатуре или кнопка обновить <span class="glyphicon glyphicon-repeat"></span>)</div>
            <hr />

            <div class="col-lg-12">
                <label>Введите html-текст, который нужно адаптировать (правая кнопка мыши + вставить или Ctrl+V)</label>
                <textarea class="form-control" name="insertArea" id="insertArea" cols="80" rows="10"></textarea>
            </div>





            <div class="col-lg-12" style="margin-top: 10px;">
                <label>Скопируйте/вырежьте адаптированный html-текст (правая кнопка мыши + копировать или Ctrl+C/X)</label>
                <textarea class="form-control" name="pastArea" id="pastArea" cols="80" rows="10"></textarea>
            </div>
            <br>



    </div>
</div>


</body>
</html>

$(document).ready(function() {

    var Final = '';

    $('#sendTo').on('click', function () {

        var insertData = $('#insertArea').val();
        var bodyVal = $("<body>", {html : insertData});
        var div = $("<div>", {html : insertData});

// replace dates
        var reg = /\d{2}\.\d{2}\.\d{4}/g;
        $(div).html(function (a,h) {
            return h.replace(reg, '<?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?>');
        });

// display result

        Final += "@include('layers.header') <body> " + div.html() + " @include('layers.footer')";
        $('#pastArea').val(Final);

    });

});
Ответить с цитированием
  #10 (permalink)  
Старый 31.07.2017, 04:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

j0hnik,
Stenli,
Вы что хрень несете, какие <?=date('+'d.m.Y'+', strtotime('+'0 day'+'));?> могут быть на клиенте?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, как сделать код читабельным(расставить все отступы и тд). alex145031 Ваши сайты и скрипты 0 27.04.2016 18:14
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37