Почему мой Regex создает внутреннюю ошибку сервера с & ldquo; ++ & rdquo; а не какая-нибудь другая комбинация специальных символов?

Посмотрев на это и попробовав, я обнаружил, что на самом деле не разрешено запускать несколько экземпляров jquery за раз. После поиска я обнаружил, что это просто трюк и было намного меньше кода.

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script>var $j = jQuery.noConflict(true);</script>
    <script>
      $(document).ready(function(){
       console.log($().jquery); // This prints v1.4.2
       console.log($j().jquery); // This prints v1.9.1
      });
   </script>

Итак, добавление «j» после «$» было всем, что мне нужно было сделать.

$j(function () {
        $j('.button-pro').on('click', function () {
            var el = $('#cnt' + this.id.replace('btn', ''));
            $j('#contentnew > div').not(el).animate({
                height: "toggle",
                opacity: "toggle"
            }, 100).hide();
            el.toggle();
        });
    });
3
задан Ryan 16 January 2019 в 17:24
поделиться

1 ответ

+ имеет специальное значение в и не может использоваться в форме ++. Вам нужно выйти из регулярного выражения.

Используя эту функцию source :

function escapeRegExp(string) {
  return string.replace(/[.*+?^${}()|[\]\\]/g, '\\[110]amp;'); // [110]amp; means the whole matched string
}

вы можете заменить:

var regexEx = new RegExp(req.query.search, "i"); //ignore case

на

var regexEx = new RegExp(escapeRegExp(req.query.search), "i"); //ignore case
                         ^^^^^^^^^^^^

Вы можете легко повторить ошибку, создав простое регулярное выражение: /c++/ в консоли браузера, которое выдаст следующее сообщение (может варьироваться в зависимости от браузера):

SyntaxError: nothing повторить


Примечание : это довольно плохая идея, чтобы позволить пользователю искать необработанный ввод.

0
ответ дан Thomas Ayoub 16 January 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: