За последние 24 часа нас посетили 60624 программиста и 1743 робота. Сейчас ищут 912 программистов ...

вопрос по RegExp

Тема в разделе "JavaScript и AJAX", создана пользователем DZEN, 15 авг 2011.

  1. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Никогда не пользовался в JS и Google не помог. Вот эта зараза всегда true возвращает, просто головой об стенку :evil:.
    [js]
    var regexp = new RegExp( '\\d{2}' );
    var string = '123';
    if( regexp.test( string ) )
    return true;
    else
    return false;
    [/js]
    P.S. jQuery и другие фреймворки не предлагать.
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    DZEN
    всё очень просто. в своём регулярном выражении ты проверяешь (буквально) "есть ли в данной строке две подряд идущие цифры" на что он тебе всегда выдаёт тру. логично?

    регулярку нужно немного переделать в вид "в данной строке ВСЕГО ДВЕ ЦИФРЫ и ничего более" - var regexp = new RegExp('^\\d{2}$');
     
  3. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    У вас по-мойму неправильный regexp \\d{ -> \d{
     
  4. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Вооот, здесь новая проблема. Когда передаю в событие onkeyup выражение, то к нему ещё надо добавлять двойной бэкслэш, иначе приходит в функцию вообще без них.
    [js]
    onkeyup="pattern_check('\\d{2}')"
    [/js]
     
  5. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    А почему бы не держать в функции уже готовое выражение?
    Но можно конечно передавать
    HTML:
    1. onkeyup="pattern_check(/\d{2}/)"
    и всё будет нормально
     
  6. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Михаил, это был просто пример, выражения будут подгружатся с помошью js-ajax. В статичном html и на чистом процедурном php пример отличный. А вот с фреймворком или просто шаблонизатором, чёрт его знает как оно будет выводить страницу, я как раз с этим уже столкнулся, и надо сказать столкновение не из приятных :(.
     
  7. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    php не в процедурах по-мойму.
    Так, а что случилось каким фрэймворком ты пользуешься? и что там происходит такого? а выражения будешь как получать как просто файлы *.js в подгрузке?
     
  8. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Я имел ввиду если стиль программирования процедурный.
    Выражения подставляются в динамически генерируемые теги input.
    Пользуюсь Kohana 3.2.0 (http://kohanaframework.org/), один и тот же проект на разных серверах с php 5.2.1 и php 5.3.6. Результат - костыли, и нежелание что-то менять. Самый эпичный '/system/classes/kohana/html.php'.
    PHP:
    1.  
    2. <?php
    3. public static function chars($value, $double_encode = TRUE)
    4. {
    5.     return ( version_compare( PHP_VERSION, '5.2.3', '<' ) ) ? htmlspecialchars( (string) $value, ENT_QUOTES, Kohana::$charset ) : htmlspecialchars( (string) $value, ENT_QUOTES, Kohana::$charset, $double_encode );
    6. }
    7. ?>
    8.  
    Ещё пользуюсь святым Twig (http://www.twig-project.org/).
    В результате встроенный кохановский и твиговский шаблонизаторы на выходе дают разный то обрубленный то экранированный текст.
     
  9. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    ну да намешал ты конечно. так а обновить пхп никак на другом сервере? или переехать на один?
    если всё проходит через 2 шаблонизатора то один же не нужен. отключи кохановский.
    А в этой функции удали нафиг один из вариантов и всё под один будет (я бы так сделал)
     
  10. DZEN

    DZEN Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    250
    Симпатии:
    0
    Во-первых ничего я не намешал. Если бы можно было обновить/переехать/дать звиздюлей всем неверным, наверное я бы это уже давно сделал. Есть один сервер с которого получаю строки с регулярками, и два разных сайта, которые эти строки используют. На одном twig, на другом kohana. Так вот они по-разному строки вставляют в html. Регулярки есть сложные, и все приходиться тестировать как они проходят экранирование. Я просто хотел предупредить, если кто с таким ещё не сталкивался.
     
  11. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    яснсть внесена