html - 匹配样式 =' ' 的正则表达式

标签 html regex

我正在使用一系列正则表达式模式从我的代码中删除 HTML 元素。我还需要删除 style="{stuff}"文件中也存在的属性。

目前我有 style.*? , 它只匹配单词 style ,但是我认为通过添加 .*?对于正则表达式,它还会在样式声明后匹配零到无限个字符吗?

我还有style={0,1}"{0,1}.*?"{0,1}哪个匹配:

style=""
style="
style

但不匹配style="something" ,再次在此正则表达式中,我希望 .*?匹配第一个 " 之间的所有内容第二个" , 但这种情况并非如此。我需要做什么来更改此正则表达式,以便它与以下所有内容匹配:

style="font-family:"Open Sans", Arial, sans-serif;background-color:rgb(255, 255, 255);display:inline !important;"
style=""
style="something" 
style

最佳答案

模式 style.*? 不匹配以下部分,因为非贪婪部分后面没有任何内容,因此它尽可能匹配。

您可以使用可选组和否定字符类:

\bstyle(?:="[^"]*")?

部分

  • \bstyle 字边界,匹配样式
  • (?: 非捕获组
    • ="匹配=并打开"
    • [^"]* 使用 negated character class 匹配任意字符 0 次以上,"除外
    • " 匹配结束 "
  • )? 关闭组并使其可选

Regex demo

如果您想将单引号或双引号与随附的结束单引号或双引号匹配以不匹配,例如 style="',您可以使用捕获组 (["' ]) 带有 backreference \1 到第 1 组中捕获的内容:

\bstyle(?:=(["'])[^"]*\1)?

Regex demo

关于html - 匹配样式 =' ' 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57992363/

相关文章:

html - 移动版超瘦,视口(viewport)设置,无重叠元素

javascript - 当使用正则表达式限制为 24 个字符时,ng-pattern 不起作用

javascript - 奇怪的 JavaScript 正则表达式

正则表达式从记录中捕获两组

regex - 正则表达式 : put $ in [ ]

javascript - 模态对话框内的 JQuery UI slider

javascript - 如何使用 puppeteer 从网站获取所有链接

javascript - 无法让图像正确覆盖

javascript - 如何将 Javascript 放在与 HTML 不同的文件中

regex - 如何在不使用 Perl 中的正则表达式的情况下找到文件中的特定行?