Javascript регулярное выражение для удаления высоты / ширины из стиля - PullRequest
0 голосов
/ 14 января 2019

Используя HTMLFilter addrules в CKEDITOR, я пытаюсь удалить высоту / ширину из СТИЛЯ простого текста.

Они не возвращают реальный объект только в виде простого текста, поэтому я действительно не могу использовать jQuery или другие инструменты манипулирования DOM.

У меня есть приведенный ниже код регулярного выражения, который успешно удаляет HEIGHT и WIDTH, но при этом оставляет фактические размеры.

Я новичок в регулярных выражениях, поэтому уверен, что это довольно просто. Просто не уверен, что.

Спасибо.

var str = "width:100px;height:200px;float:left;";
var regex = /(height|width):(?=(.*?);)/gi;
console.log(str.replace(regex,""));

Ответы [ 4 ]

0 голосов
/ 14 января 2019

A не-regex решение со встроенными методами javascript для удаления height/width из СТИЛЯ простого текста.

function isNotWidthHeight(style) {
  return style.toLowerCase().indexOf("width") === -1 && style.toLowerCase().indexOf("height") === -1 && style;
}

var str = "margin:0 auto;width:100px;height:200px;float:left;";
var array = str.split(';').filter(isNotWidthHeight);
console.log(array.join(';'));
0 голосов
/ 14 января 2019

Довольно близко, вам просто нужна дополнительная группа и что-то, чтобы подождать, пока либо ;, либо граница слова, \b. Это захватит любую настройку, включая calc или любые другие настройки, которые могут следовать до ; или до конца встроенного стиля.

var str = "width:100px;height:200px;float:left;";
var str2 = "width:calc(100vh - 20px);height:100%;float:left;";

var regex = /((width|height):[\s\S]+?;|\b)/gi;
console.log(str.replace(regex,""));
console.log(str2.replace(regex,""));
0 голосов
/ 14 января 2019

Вы использовали предпросмотр, и этот шаблон не потребляет, то есть совпадающий текст не становится частью целого значения соответствия. Таким образом, он не удаляется

Используйте шаблон как

/(?:height|width):[^;]*;/gi

См. Демоверсию regex .

Подробнее

См. Демонстрацию JS:

var str = "width:100px;height:200px;float:left;";
var regex = /(?:height|width):[^;]*;/gi;
console.log(str.replace(regex,""));
0 голосов
/ 14 января 2019

Вам нужно также захватить значения. .*? вместо (?=(.*?);) будет достаточно.

var str = "width:100px;height:200px;float:left;";
var regex = /(height|width):.*?;/gi;
console.log(str.replace(regex,""));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...