Вчера я столкнулся с проблемой сопоставления двух регулярных выражений при выполнении mergeCSS. Это тоже заняло много времени. Наконец, с помощью однокурсников CE из группы CSS Forest, я специально записал их и могу. используйте их в будущем.
Первая — это проблема сопоставления путей к изображениям. Обрабатываемая строка:
Ниже приводится цитируемое содержание: |
Изначально я написал следующее:
Ниже приводится цитируемое содержание: |
Результат:
Ниже приводится цитируемое содержание: |
Как видите, результат сопоставления двух картинок в одну не тот, что вы ожидали. Измените его на ленивое сопоставление следующим образом:
Ниже приводится цитируемое содержание: |
Результат:
Ниже приводится цитируемое содержание: URL(demo.jpg); |
Два изображения были сопоставлены, что и является желаемым результатом. :)
Вторая проблема — использование переменных в регулярных выражениях. Давайте кратко объясним, почему добавление переменных также может быть проблемой. Давайте сначала посмотрим на описание объекта RegExp и метода replace() . Общий способ написания регулярных выражений Javascript. :
Ниже приводится цитируемое содержание: |
Все содержимое между «/» будет рассматриваться как регулярное выражение, поэтому имя переменной будет рассматриваться как строка. Без добавления "/"? Это нормально, но если вы не добавите «/», вы не сможете указать режим сопоставления и сможете сопоставить только первый.
Ниже приводится цитируемое содержание: Новый объект RegExp может быть создан с помощью объекта RegExp с указанным режимом и флагами. |
затем:
Ниже приводится цитируемое содержание:
|
Здесь следует отметить использование "\" для выхода, потому что
Ниже приводится цитируемое содержание: Если шаблон аргумента представляет собой регулярное выражение, а не строку, конструктор RegExp() создает новый объект RegExp с тем же шаблоном и флагами, что и указанный RegExp. |
Во время этого процесса "\" будет преобразовано в "", то есть приведенный выше результат:
Ниже приводится цитируемое содержание:
|