Javascript 正则表达式不';不适用于标记之间没有空格的html字符串
假设我想从这个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
<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解释了正则表达式的基本工作原理。