ios не работает .match

298
08 марта 2018, 12:38

В загрузке странички аяксом использую регулярку. Везде работает кроме IOS. У яблок на этой строке перестаёт выполняться скрипт. Диагностировал место путем расставления алертов в разных местах. Собственно строка с проблемой.

 var classes = data.match(/<body class="([\w\s-]*)"/s);

И так со всеми регулярками, ужас. Кто подскажет где копать? как решать?

try catch говорит invalid flags

Answer 1

Код var classes = data.match(/<body class="([\w\s-]*)"/s); работает только в последних версиях Chrome, в котором уже реализованы некоторые возможности стандарта ECMAScript 2018. В частности, реализована поддержка флага s, "DOTALL", который необходим в том случае, когда шаблон . должен находить любые знаки, включая знаки перевода строки (по умолчанию точка не находит такие знаки).

В ECMAScript5 и ECMAScript6 для нахождения любого знака можно использовать [^] или [\s\S] / [\w\W] / [\d\D].

Так как в регулярном выражении <body class="([\w\s-]*)" нет ., флаг s не нужен.

Флаг i может пригодиться, если текст содержит body class и BODY CLASS.

READ ALSO
Как поместить фото на GoogleMap на Node.js?

Как поместить фото на GoogleMap на Node.js?

считывание EXIF данный с помощью пакета exifНеобходимо вытащить оттуда только геоданные и по ним разместить фото на карте

306
Функция load выполняется два раза подряд

Функция load выполняется два раза подряд

У меня есть набор функций, какие должны выполнится после загрузки контента, функцией loadТак вот все что происходит до load вызывается один раз,...

263
отправка с клиента на сервер Socket.io

отправка с клиента на сервер Socket.io

Доброго времени суток, не могу отправить сообщение с клиента на сервер по сокету, хотя с сервера на клиент отправляется все хорошоНа клиенте:

266
Может кто помочь с решением задачи ? Язык JavaScript

Может кто помочь с решением задачи ? Язык JavaScript

Необходимо написать функцию, которая проверяет можно ли из первой строки получить вторую, поменяв в ней символы местамиВсе символы из исходной...

298