我正在寻找一个正则表达式模式,以查找 HTML 标记内的属性。具体而言,我想查找所有的......
style=""
... 并将其从包含它的 HTML 标签中删除。 显然,这也包括双引号中包含的任何内容。
我正在使用 Classic ASP 完成此操作。 我已经设置了一个用于查找字符串中所有 HTML 标签并删除它们的不同正则表达式模式的函数。 它运行得很好。 但现在我只需要另一个模式,专门用于删除所有样式属性。
任何帮助都将不胜感激。
我正在寻找一个正则表达式模式,以查找 HTML 标记内的属性。具体而言,我想查找所有的......
style=""
... 并将其从包含它的 HTML 标签中删除。 显然,这也包括双引号中包含的任何内容。
我正在使用 Classic ASP 完成此操作。 我已经设置了一个用于查找字符串中所有 HTML 标签并删除它们的不同正则表达式模式的函数。 它运行得很好。 但现在我只需要另一个模式,专门用于删除所有样式属性。
任何帮助都将不胜感激。
也许一个更简单的表达方式是
style="[^\"]*"
所以双引号之间的所有内容,除了双引号。
我觉得这可能行:
/style="[a-zA-Z0-9:;\.\s\(\)\-\,]*"/gi
如果你只想替换其中某些部分,也可以将它们放在捕获组中
/(style=")([a-zA-Z0-9:;\.\s\(\)\-\,]*)(")/gi
\#
来捕获包含颜色相关规则的样式,例如background: #ff0000
。 - ThoughtProcessstyle="[a-zA-Z0-9:;\.\s\(\)\-\,\'\#]*"
这个对我有用,它缺少了单引号和#符号。 - Peter/(style=")([a-zA-Z0-9:;\.\s\(\)\-\,\!\#\'\%]*)(")/gi
- Nicholas Byfleet尝试一下,这将完全替换style属性及其值
const regex = /style="(.*?)"/gm;
const str = `<div class="frame" style="font-family: Monaco, Consolas, "Courier New", monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div>`;
const subst = ``;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
/\s*style=(["'])(.*?)\1/gmi
可以更加灵活 - 支持单引号,去除额外的空格,忽略大小写。 - xmedeko在Visual Studio的查找和替换中,这是我用来删除样式和类属性的方法:
\s*style|class="[^"]*\n*"
这将删除开头的空格、样式和类属性。它查找除双引号之外的任何内容,然后查找换行符(如果它扩展到新行),最后添加闭合的双引号。
/style="[a-zA-Z0-9:;&\."\s\(\)\-\,]*|\\/ig
这个正则表达式可以捕获字符串中出现"
的特殊情况,例如:
<div class="frame" style="font-family: Monaco, Consolas, "Courier New", monospace; font-size: 12px; background-color: rgb(245, 245, 245);">some text</div>
style ="[a-zA-Z0-9:;&\."\s\(\)\-\,]*"|\\\
。 - Joaquin Marcher这适用于Perl。也许您需要稍微更改正则表达式以匹配ASP规则,但它应该适用于任何标记。
$file=~ s/(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*".*?")([^<>]*>)/$1 $3/sig;
其中line是一个HTML文件。
此外,这是使用.NET C#编写的。
string resultString = null;
string subjectString = "<html style=\"something\"> ";
resultString = Regex.Replace(subjectString, @"(<\s*[a-z][a-z0-9]*.*\s)(style\s*=\s*"".*?"")([^<>]*>)", "$1 $3", RegexOptions.Singleline | RegexOptions.IgnoreCase);
<html >
这个表达式对我起作用:
style=".+"/ig
style="[^"]+"/ig
。 - IanB试一下:
(style|class)=(["'])(.*?)(["'])
以下表达式应该删除 style
属性中的 任何内容(包括属性本身);关键是这包括属性使用双引号或单引号:
/style=("|')(?:[^\1\\]|\\.)+?\1/gi
这将拆分捕获组,以便它们可以在单引号或双引号上匹配,并捕获之间的任何内容,包括URL编码字符和换行符,同时保留其他属性(如类或名称)。
在此处进行了测试:https://regexr.com/4rovf
/style=("|')(?:\\\1|.)+?\1/gi
。 - Lauri