JS Regexp:从 html 获取内联 JavaScript
JS Regexp: get the inline javascripts from html
我需要从html字符串中获取所有脚本标签,将内联脚本和"链接"脚本分开。内联脚本是指没有 src
属性的脚本标签。
以下是我获取"链接脚本"的方法:
<script(.)+src=(.)+(/>|</script>)
因此,<script
后跟一个或多个任何字符,后跟src=
,后跟/>
或</script>
。
这按预期工作。
现在我想获取所有没有 src 标签的脚本标签,在 <script .....>
和 </script>
之间有一些 javascript 代码,但我无法弄清楚如何做到这一点。我刚开始理解正则表达式,所以需要更有经验的r.e.大师的帮助:)
更新好的,亲爱的反对者。我在一个变量中有整个 html 页面的 html 代码。我想从中提取脚本标签。怎么做,比如用jquery?
var dom = $(html);
console.log(html.find('script');
行不通。那么,实现这一目标的方法是什么?
更新 2我不需要用正则表达式解决这个问题,但是因为现在我正在学习它们,我想我会尝试一下。我对任何其他解决方案持开放态度。
使用 document.createElement
创建一个 DOM 元素,然后将其innerHTML
设置为 HTML 字符串的内容。这将使用浏览器的内置解析器自动解析您的 HTML,并用子元素填充您新创建的元素。
dummyDoc = document.createElement("html");
dummyDoc.innerHTML = "<body><script>alert('foo');</script></body>"; // or myInput.value
var dom = $(dummyDoc);
var scripts = dom.find('script');
(我只使用jQuery,因为你在你的问题中这样做了。这当然也可以在没有jQuery的情况下实现。
如果你处于没有 dom 访问权限的位置(nodejs?),你将被迫使用正则表达式。这是一个在类似情况下对我有用的解决方案:
function scrapeInlineScripts(sHtml) {
var a = sHtml.split(/<script[^>]*>/).join('</script>').split('</script>'),
s = '';
for (var n=1; n<a.length; n+=2) {
s += a[n];
}
return s;
}
相关文章:
- 使用Javascript获取所选选项ID
- 可以't使用JavaScript获取width属性
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- Javascript获取上一个元素的内容
- 使用Javascript获取Twitter访问令牌
- 在不同的文件中使用Javascript获取表单数据
- 如何用javascript获取谷歌地图的经度和纬度
- 使用javascript获取表的td值
- 如何使用JavaScript获取当前URL
- 如何在谷歌网站中使用javascript获取当前页面的网址
- Javascript获取所有锚链接的索引
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 如何使用javascript获取下一个/转发url
- 需要使用javascript获取输入文本,然后将其添加到句子中
- 使用JavaScript获取Gridview单元格值
- 使用javascript获取跨度的文本
- 如何使用Javascript获取POST请求填充的元素的值
- JavaScript-获取数据属性的值返回未定义的值
- Javascript:获取“;FORM”;它是在.html到外部.js文件中创建的