Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式从html字符串中删除脚本_Javascript_Regex - Fatal编程技术网

Javascript 使用正则表达式从html字符串中删除脚本

Javascript 使用正则表达式从html字符串中删除脚本,javascript,regex,Javascript,Regex,我想使用正则表达式从html字符串中删除标记 我有以下代码可以工作,但在背靠背脚本中无法工作: function removeScriptsFromHtmlStr(html) { const regex = /<script(?:(?!\/\/)(?!\/\*)[^'"]|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\/\/.(?:\n)|\/\*(?:(?:.|\s))*?\*\/)*?<\/script>/; const result =

我想使用正则表达式从html字符串中删除
标记

我有以下代码可以工作,但在背靠背脚本中无法工作:

function removeScriptsFromHtmlStr(html) {
  const regex = /<script(?:(?!\/\/)(?!\/\*)[^'"]|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\/\/.(?:\n)|\/\*(?:(?:.|\s))*?\*\/)*?<\/script>/;
  const result = html.replace(regex, '');
  return result;
}
函数removeScriptsFromHtmlStr(html){

const regex=/延迟加载应该可以做到这一点
(.+?)
试试这个正则表达式

/<script.*?>.*?<\/script>/igm
/.*?/igm

由于JavaScript不支持单线
/s
标志,因此需要对
进行变通:

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

添加一个
g
标志(代表全局)。因此,
/your regex/g
,否则只会替换第一个匹配项。这是否回答了您的问题?如果出于安全原因这样做,那么不要使用RegExp,这太容易欺骗您可以创建的任何RegExp。请创建DocumentFragment,附加HTML,并从解析的片段中删除脚本元素。是否不要用正则表达式解析HTML。仅供参考,有很多方法可以打破这个正则表达式。