JavaScript正则表达式从样式HTML标记中提取文本
我正在尝试JavaScript正则表达式来提取CSS HTML标记之间的所有文本:JavaScript正则表达式从样式HTML标记中提取文本,javascript,regex,Javascript,Regex,我正在尝试JavaScript正则表达式来提取CSS HTML标记之间的所有文本: var rawHtml = "<style type='text/css'> div { color: red; } </style>"; //var rawHtml = "<style type=\"text/css\"> div { color: red; } </style>"; //var rawHtml = "<style> div {
var rawHtml = "<style type='text/css'> div { color: red; } </style>";
//var rawHtml = "<style type=\"text/css\"> div { color: red; } </style>";
//var rawHtml = "<style> div { color: red; } </style>";
var cssString = rawHtml.match(/<style[^>]*>(.+?)<\/style>/gi);
console.log(cssString);
var rawHtml=“div{color:red;}”;
//var rawHtml=“div{color:red;}”;
//var rawHtml=“div{color:red;}”;
var cssString=rawHtml.match(/]*>(.+?)/gi);
console.log(cssString);
样式标记可以具有属性以及单引号或双引号。如何成功提取所有用例?我的正则表达式没有拾取它。只需使用DOMParser即可:
constrawhtml=“div{color:red;}”;
const doc=new DOMParser().parseFromString(rawHTML,“text/html”);
常量匹配=[…doc.querySelectorAll('style')]
.map(style=>style.textContent);
console.log(匹配项)代码>只需使用DOMParser即可:
constrawhtml=“div{color:red;}”;
const doc=new DOMParser().parseFromString(rawHTML,“text/html”);
常量匹配=[…doc.querySelectorAll('style')]
.map(style=>style.textContent);
console.log(匹配项)代码>我认为代码中的主要问题是您将cssString设置为完全匹配,而不是括号中匹配的部分。你需要像这样的东西:
var innerHTML = cssString ? cssString[1] : "";
这里重要的一点是,正则表达式中的括号匹配-(.+?)
-存储在backreference 1中,即存储在cssString[1]
中,而不是存储在cssString
中
不过,我也会做一些小改动,使您的正则表达式更加健壮:
/<style[^>]*>([^<]+)<\/style>/i
您将得到一个数组(cssstringaray),其中包含文档中每个…
组中的css。我认为代码中的主要问题是您将cssString设置为完全匹配,而不是括号中匹配的部分。你需要像这样的东西:
var innerHTML = cssString ? cssString[1] : "";
这里重要的一点是,正则表达式中的括号匹配-(.+?)
-存储在backreference 1中,即存储在cssString[1]
中,而不是存储在cssString
中
不过,我也会做一些小改动,使您的正则表达式更加健壮:
/<style[^>]*>([^<]+)<\/style>/i
您将得到一个数组(cssStringArray),其中包含文档中每个…
组中的css。使用dom解析器更容易。不要将其解析为文本:通常不容易工作(例如,如果注释了呢?)。使用dom解析器更容易。不要将其解析为文本:通常不容易工作(例如,如果被评论了怎么办?)。这个答案对我理解我的问题非常有帮助。谢谢。这个答案对我理解我的问题非常有帮助。谢谢。