Javascript正则表达式用于从样式中删除高度/宽度

时间:2019-01-14 17:18:53

标签: javascript regex

我在CKEDITOR中使用HTMLFilter地址,试图从纯文本样式中删除高度/宽度。

他们不会以纯文本样式返回实际对象,所以我真的不能使用jQuery或其他DOM操作工具。

我有下面的正则表达式代码,可以成功删除HEIGHT和WIDTH,但仍然保留实际尺寸。

我是正则表达式的新手,所以我确定它很简单。只是不确定。

谢谢。

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

4 个答案:

答案 0 :(得分:1)

您使用了超前模式,这是一种非消耗模式,即,它匹配的文本不会成为整个匹配值的一部分。因此,它不会被删除

使用类似的模式

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

请参见regex demo

详细信息

请参阅JS演示

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

答案 1 :(得分:1)

具有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(';'));

答案 2 :(得分:0)

您还需要捕获这些值。 用.*?代替(?=(.*?);)就足够了。

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

答案 3 :(得分:0)

非常接近,您只需要一个额外的组和一些东西即可等待;或单词边界\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,""));