Javascript 正则表达式不';不适用于标记之间没有空格的html字符串

Javascript 正则表达式不';不适用于标记之间没有空格的html字符串,javascript,regex,Javascript,Regex,假设我想从这个HTML字符串中删除第二个标记: <meta http-equiv="set-cookie" content="aaaa"><meta http-equiv="set-cookie" content="bbbb"><meta http-equiv="set-cookie" content="cccc"> 使用这个正则表达式 /<meta http-equiv=[\"']?set-cookie[\"']? content=[\"']bb

假设我想从这个HTML字符串中删除第二个标记:

<meta http-equiv="set-cookie" content="aaaa"><meta http-equiv="set-cookie" content="bbbb"><meta http-equiv="set-cookie" content="cccc">

使用这个正则表达式

/<meta http-equiv=[\"']?set-cookie[\"']? content=[\"']bbbb[\"'].*>/ig

/发生这种情况是因为
*
是贪婪的,它将尽可能多地消耗您的字符串

因此,将您的regexp更改为

/<meta http-equiv=[\"']?set-cookie[\"']? content=[\"']bbbb[\"'].*?>/ig

/为什么不使用DOM操作?对非常简单的HTML使用正则表达式


我认为使用普通正则表达式是不可能的。以下是我对它的看法:

var str = '<meta http-equiv="set-cookie" content="aaaa"><meta http-equiv="set-cookie" content="bbbb"><meta http-equiv="set-cookie" content="cccc">';
var r = /^<[^>]+>(<[^>]+>)/;
str.replace(r.exec(str)[1], ''); // <meta http-equiv="set-cookie" content="aaaa"><meta http-equiv="set-cookie" content="cccc">
var-str='';
var r=/^]+>(]+>)/;
str.replace(r.exec(str)[1],'');//
您可以简单地使用:

/<meta[^>]*content="bbbb">/
/]*content=“bbbb”>/

说明:

var s='<meta http-equiv="set-cookie" content="bbbb"><meta http-equiv="set-cookie" content="cccc"><meta http-equiv="set-cookie" content="aaaa">';
var regex=/<meta[^>]*content="bbbb">/g;
var result=s.replace(regex,"")

代码:

var s='<meta http-equiv="set-cookie" content="bbbb"><meta http-equiv="set-cookie" content="cccc"><meta http-equiv="set-cookie" content="aaaa">';
var regex=/<meta[^>]*content="bbbb">/g;
var result=s.replace(regex,"")
var s='';
var regex=/]*content=“bbbb”>/g;
var result=s.replace(regex,“”)

@Obay:它使量词变得懒惰,即它试图找到最短的匹配项,而不是最长的匹配项@Obay:,wiki解释了正则表达式的基本工作原理。