使用正则表达式删除 JavaScript

2023-12-10

我无法使用 C# 从 HTML 页面中删除所有 javascript。我有三个正则表达式,它们删除了很多,但也错过了很多。使用 MSHTML DOM 解析器解析 javascript 会导致 javascript 实际运行,这是我试图通过使用正则表达式来避免的情况。

    "<script.*/>"

    "<script[^>]*>.*</script>"

    "<script.*?>[\\s\\S]*?</.*?script>"

有谁知道我错过了什么导致这三个正则表达式错过 JavaScript 块?

我试图删除的示例:

<script src="do_files/page.js" type="text/javascript"></script>
<script src="do_files/page.js" type="text/javascript" />
    <script type="text/javascript">
    <!--
        var Time=new Application('Time')
    //-->
    </script>
    <script type="text/javascript">
        if(window['com.actions']) {
            window['com.actions'].approvalStatement =  "",
            window['com.actions'].hasApprovalStatement = false
        }
    </script>

我假设您正在尝试简单地清理 JavaScript 的输入。坦率地说,我担心这个解决方案太简单了,因为它看起来非常简单。请参阅下面的表达式(在 C# 字符串中)之后的推理:

@"(?s)<script.*?(/>|</script>)"

就是这样 - 我希望! (它当然适用于您的示例!)

我对简单性的推理是,尝试使用正则表达式解析 HTML 的主要问题是嵌套标签的可能性 - 与其说是不同标签的嵌套,不如说是同义标签的嵌套

例如,

<b> bold <i> AND italic </i></b>

……还不错,但是

<span class='BoldText'> bold <span class='ItalicText'> AND italic </span></span>

解析起来会困难得多,因为结束标签是相同的。

但是,由于嵌套无效script标签,下一个实例/>(</script>是该脚本块的结尾。

脚本标签内总是有可能存在 HTML 注释或 CDATA 标签,但如果它们不包含这些应该没问题</script>。然而:如果他们这样做了,肯定有可能获得一些“代码”。我不认为页面会呈现,但有些 HTML 解析器非常灵活,所以你永远不知道。要处理一些额外的可能的空白,您可以使用:

@"(?s)<\s?script.*?(/\s?>|<\s?/\s?script\s?>)"

如果您能找到一种方法来破解它,让有效的 HTML 代码通过,请告诉我使用可运行的 JavaScript(我知道有几种方法可以获得some东西通过了,但如果它确实通过了,应该以多种不同的方式之一来破坏它,并且不应该是可运行的 JavaScript 代码。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用正则表达式删除 JavaScript 的相关文章

  • Makefile:如何正确包含头文件及其目录?

    我有以下 makefile CC g INC DIR StdCUtil CFLAGS c Wall I INC DIR DEPS split h all Lock o DBC o Trace o o cpp DEPS CC o lt CFL
  • 我想在数据表中使用 Div 结构而不是 Table。是否可以?

    我想用数据表 https datatables net 用div结构代替表格 目的是满足设计要求 有什么可能的方法或替代方案吗 不 您将无法执行此操作 Datatables 的核心仅适用于表格元素和子 thead tbody tfooter
  • Magento SOAP V2 API - 附加属性设置为空

    几个小时以来 我一直在尝试通过 SOAP V2 API 创建具有附加属性的产品 每当我打电话时就会添加该产品目录产品创建但我随请求发送的附加属性被设置为空 每当我不添加附加属性时 这两个属性都会设置为其默认值 因此我认为这些属性正在发送和接
  • 在 Angularjs 中格式化输入值

    我正在尝试编写一个指令 自动格式化数字
  • 如何使我的网站兼容移动设备和平板电脑? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想让我现有的网站在手机 平板电脑上查看时自动调整 甚至在您在桌面上调整屏幕时自动调整 如果失败的话 如果太难 你有什么建议 我基本上
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 使用 JS 从列表中删除最近的 元素的 URL

    所以我有一个网址列表 并且有删除按钮 图像按钮 当点击删除按钮时 按钮旁边的 url 必须从列表中删除 let list const remove document getElementById remove const view docu
  • Highcharts 异步服务器加载多个系列

    我正在尝试按照其示例使用 Highcharts 的延迟加载 http www highcharts com stock demo lazy loading http www highcharts com stock demo lazy lo
  • 在运行时生成可执行文件

    好吧 所以我想知道如何创建一个程序 该程序创建第二个程序 就像大多数压缩程序如何创建自解压自可执行文件一样 但这不是我需要的 假设我有 2 个程序 每个都包含一个类 我将使用一个程序来修改类并用数据填充类 第二个文件将是一个也具有该类的程序
  • 使用智能指针在大型对象集合中创建多个索引

    我正在为一个大型对象集合创建多个索引 即使用不同的键 对象可以改变 集合可以缩小和增长 到目前为止我的想法 保留某种指向对象的指针的多个集合 使用set代替map以获得更好的封装 使用 unordered set 可以很好地扩展大型数据集
  • 你可以推荐什么 JavaScript 缓存 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个好的javascript内存缓存库来缓存客户端计算结果 我的要求 适用于 Internet Explorer FireFox
  • 如何在 JS 文件中使用 Github 机密

    我有一个基本的 git 存储库 其中包含用于构建和部署的 github 操作 主要是 HTML 和 TS 文件 但是我必须在一些需要保密的 API 密钥中使用 所以我想办法为他们使用 GITHUB SECRETS 如何在我的 js 或 TS
  • 如何在不加载到内存的情况下对大型 csv 文件进行排序

    我有 20GB csv 文件 如下所示 CallId MessageNo Information Number 1000 1 a 2 99 2 bs 3 1000 3 g 4 66 2 a 3 20 16 3 b 1000 7 c 4 99
  • 自动打开默认电子邮件客户端并预填充内容

    当用户在页面上保存某些内容时 我需要自动打开用户的默认电子邮件客户端 我需要填充电子邮件主题 地址并在电子邮件正文中添加一些内容 实现这一目标的最佳选择是什么 我知道mailto 属性 但用户必须单击此属性 我不确定它是否允许您指定主题和内
  • 通过 C++ 标头在 C++ 和 C# 中使用枚举

    我有一个用 C 编写的服务器 位于命名管道的末端 嗯 提供服务 可以发送到服务器的命令在位于头文件中的枚举中定义 enum e doThing1 e doThing2 e doLastThing 所需枚举的值被放入发送到服务器的消息的第一个
  • 如何同时正确使用管道和信号?

    我有 2 个孩子 我想将信号从孩子发送到父母 并将答案 随机数 为什么 为什么不 命名管道从父母发送到每个孩子 我有这个代码 include
  • 矩形描边上的单击事件

    我想仅在矩形的笔划上添加单击事件 并避免在矩形内部单击 下面是代码 var stage new Kinetic Stage container container width 578 height 200 var layer new Kin
  • 动态插入的 jQuery 库加载完成后执行我的 jQuery 脚本

    我通过以下方式在页面上动态插入 jQuery 库
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • C# p/Invoke 如何使用 DirectX 游戏的 SendInput 模拟 keyPRESS 事件

    我经常为各种机器人或其他 GUI 自动化程序模拟键盘按下事件而苦苦挣扎 我已经成功地使用以下方法模拟按键事件 INPUT kInput new INPUT 1 kInput j type SendInputEventType InputKe

随机推荐

  • 获取实现某个抽象类的所有类

    我试图获取实现某个抽象类的所有类 我正在尝试使用以下代码来做到这一点 var type typeof BaseViewComponent var types Assembly GetEntryAssembly GetReferencedAs
  • 媒体播放器应该停止以编程方式断开我的 Android 应用程序中的耳机连接

    我在开发媒体播放器应用程序时遇到问题 我希望这样当我从设备上取下耳机时 我的应用程序中的 MediaPlayer 就会暂停 Android 文档建议使用 AUDIO BECOMING NOISY 意图过滤器 在您的清单中设置意图过滤器 然后
  • 使用 CMake 将文件从源目录复制到二进制目录

    我正在尝试在 CLion 上创建一个简单的项目 它使用 CMake 生成 Makefile 来构建项目 或某种项目 我需要的只是每次运行代码时将一些非项目文件 某种资源文件 传输到二进制目录 该文件包含测试数据 应用程序打开它来读取它们 我
  • Python:使用值的 sum() 优雅地合并字典[重复]

    这个问题在这里已经有答案了 我正在尝试合并来自多个服务器的日志 每个日志都是一个元组列表 date count date可能会出现多次 并且我希望生成的字典能够保存来自所有服务器的所有计数的总和 这是我的尝试 例如一些数据 from col
  • 在 UILabel 中查找子字符串的坐标

    我有一个来自服务器的字符串 我正在 UILabel 上显示它 在该字符串中 我正在识别一些特定的子字符串 我想在该子字符串上放置一个按钮 按钮将是 UILabel 的子视图 为此 我需要子字符串坐标 我经历了这个要点但我无法理解它 假设我的
  • 从Android Market查询最新的应用程序版本

    我可以通过代码在 Android Market 中查询我的应用程序的最新版本吗 我想在新版本可用时向用户显示更新通知 相关问题 在市场上更新我的应用程序的过程 Android 上有没有办法自动更新应用程序 Android 市场应用程序更新
  • “./bin/www”在 Express 4.x 中起什么作用?

    我刚刚开始在我的 Node js 应用程序中学习 Express 4 0 我发现它生成了 bin www文件 其中仅写入应用程序服务器和端口设置 而其他所有内容 例如中间件和路由 都在中定义 app js file 但是 我不确定这是什么
  • 使用java和itext生成带有Unicode字符的PDF文档

    我尝试从打印一些附加 Unicode 符号的 itext 示例中改编标准代码 尽管使用的字体支持这些字符 但我没有得到任何结果 最后一个字符 u2609 不会打印到pdf 提前致谢 These examples are written by
  • 垂直于圆锥体的曲面

    我用 OpenGL C 编写一个程序来对圆锥体进行光线追踪 对于我的强度计算 我需要知道表面法线 给定基础半径 高度和中心坐标 如何计算表面法线 我假设您需要在给定表面上的点的情况下找到表面的法线 我进一步假设这是一个圆锥体 其底座朝下 y
  • Firebase云函数对象可能“未定义”

    我在打字稿中有以下代码 并且在线收到此错误 change after data 对象可能是 未定义 import as functions from firebase functions import as admin from fireb
  • .NET 4.0 中的重大变化

    新 4 0 中有很多关于新功能和类的信息 但也有一些更改可能会影响现有应用程序 例如 Timespan 现在实现了 IFormattable 和旧版本字符串 Format 无效选项将引发异常 而不是调用简单的 ToString 然而 CLR
  • 如何使用 J2EE 容器 (Websphere) 全局设置响应标头

    有没有办法在 Web 服务器级别 web xml 为所有事务设置标头 具体来说 我想这样做 response setHeader Cache Control no cache no store response setDateHeader
  • Environment.TickCount是否受系统时间调整影响?

    我很好奇 NET BCL 属性Environment TickCount 是如何实现的 我现在特别想知道它是否受到以下影响系统时间调整 我对该属性是如何实现的第一个猜测是它只是一个围绕获取TickCount方法 但是 该文档的获取刻度数方法
  • 从 URL 获取图像但未完全加载

    我试图从 URL 获取图像 但当我将其保存到文件时 它是实际图像的一半 我搜索了许多网站和解决方案 例如 HttpWebRequest BeginGetResponse 因为我认为这是因为我必须缓冲数据 但它不起作用 我不知道我的代码的哪一
  • 从蓝牙输出到线路输出或扬声器的 AudioSession 输入

    设置音频会话后 以下代码将允许蓝牙输入 UInt32 allowBluetoothInput 1 AudioSessionSetProperty kAudioSessionProperty OverrideCategoryEnableBlu
  • 无法获取 Ripple 会话信息。例外:contentp-body

    Visual Studio 2015 CTP 5 创建了一个空白的 Apache Cordova 项目 没有更改任何文件 文件 gt 新建项目 gt JavaScript gt Apache Cordova 应用程序 已发表 调试 Andr
  • 如何让 php_http 扩展在 Windows 的 PHP 版本 5.4 上工作?

    有人知道如何让 php http 扩展在 Windows 上的 php 5 4 5 上运行吗 我正在尝试在我的 Windows 计算机上升级到 PHP 5 4 5 运行 IIS 我正在开发的项目依赖于 php http 扩展 http ww
  • 如何获取远程文件的上次修改日期

    我需要获取远程文件的文件修改日期 明显地 attributes在这个例子中返回NULL BOOL fileHasBeenModifiedSinceLastLaunch NSError err nil NSDictionary attribu
  • 在 MS-SQL 中将行数据分组并求和到列中?

    原始问题 我不知道我是否应该提出一个新问题或取消标记最后一个问题 所以 我想做的是 WorkWeek Catg Item Cost WorkWeek1 Cat1 Item1 Price WorkWeek1 Cat1 Item2 Price
  • 使用正则表达式删除 JavaScript

    我无法使用 C 从 HTML 页面中删除所有 javascript 我有三个正则表达式 它们删除了很多 但也错过了很多 使用 MSHTML DOM 解析器解析 javascript 会导致 javascript 实际运行 这是我试图通过使用