js正则匹配字符串里的所有a标签,找到a标签栏有没有target属性,没有加上target=“_blank“有的话怎修改

js正则匹配字符串里的所有a标签,找到a标签栏有没有target属性,没有加上target=“_blank“,如果有的话则怎修改为target=“_blank“

按照你的要求编写的Javascript语言程序如下

<script type=text/javascript>
 var str="<li><a title='电信一区' href='xxx'>电信一区</a></li><li><a title='电信五区' href='xxx' >电信五区</a></li><li><a title='电信八区' href='xxx' >电信八区</a></li><li><a target='a.html' title='双线一区' href='xxx' >双线一区</a></li><li><a title='双线二区' href='xxx' >双线二区</a></li>";
 var regex=/<a(.*?)target='[^']*'(.*?)>/ig;
 str=str.replace(regex,"<a$1target='_blank '$2>");
 var regex1=/<a(((?!target).)*?)>/ig;
 str=str.replace(regex1,"<a target='_blank '$1>");
 alert(str);
</script>

运行结果

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-24
var str = "<a href='xxx'>xx</a> <div class='aa'><a href='xx'>xx</a><a target='_blank' href='xxxx'>xxxx</a></div>";
str = str.replace(/<a[^>]+>/g,function(a){
if(!/\starget\s*=/.test(a)){
return a.replace(/^<a\s/,"<a target=\"_blank\" ");
}
return a;
});

得到结果
str = "<a target="_blank" href='xxx'>xx</a> <div class='aa'><a target="_blank" href='xx'>xx</a><a target='_blank' href='xxxx'>xxxx</a></div>"

有用给个采纳

本回答被提问者采纳
第2个回答  2018-10-24
str.replace(/<a\b[^>]*>/g,function(matchStr){
return matchStr.replace(/\btarget\b/i.test(matchStr)?/\btarget="[^"]*"/i:/(?=>)/," target=\"_blank\"");
});

js正则匹配字符串里的所有a标签,找到a标签栏有没有target属性,没有加...
)target='[^']*'(.*?)>\/ig; str=str.replace(regex,"<a$1target='_blank '$2>"); var regex1=\/<a(((?!target).)*?)>\/ig; str=str.replace(

正则表达式排除特定字符串
1、首先匹配<和>,得到"\\<.*\\>",(\\为转义,<和>加不加都可以)但出现多个标签在一组中。2、排除中间的<和>,表达式改为"\\<.[^<>]*\\>"。3、如果想得到不包含属性的所有标签,可以加个字符数限制,根据标签字符数,表达式改为“\\<\\S[^<>]{0,12}\\>”。二、匹配指定标签 匹配所有DIV...

怎么用php正则获得a标签内的文字啊
php中正则匹配只要使用这两个函数:preg_match_all preg_match 这里使用preg_match_all,代码如下:subject = '<a href="xxx.php">abc测试<\/a>'; \/\/ 假设这是需要匹配的字符串$pattern = '\/<a href="[^"]*"[^>]*>(.*)<\\\/a>\/'; \/\/ 这是匹配的正则表达式preg_match_all($p...

正则表达式能匹配a标签之间所有内容
str=str.replace(\/<\/g,'<');str=str.replace(\/>\/g,'>');var reg=\/<a[^>]*>.*(?=<\\\/a>)<\\\/a>\/gi;alert(str.replace(reg,''));

php的正则,怎么匹配a标签
preg_match_all ('\/<a href=\\"(.*?)\\".*?>(.*?)<\\\/a>\/i',$yuanstr,$matches);$1是链接 $2是链接文字

求!DW网页正则表达式替换公式
不是太清楚你的情况,如果此页面没有其它的A标签的话<a[^>]*>替换成<a>就行了,它会把所有A标签替换掉的 如果只想匹配这种属性形式的A标签<a trace="[^"]*" tracenum="[^"]*" href="[^"]*" target="[^"]*" title="[^"]*" data-spm-anchor-id="[^"]*">替换成<a> 想捕获...

求js正则匹配注释,包括多行注释和单行注释
你好,我写了一个正则可以满足你的需求 var rNote = \/(\\\/\\\/.*$)|(\\\/\\*(.|\\s)*?\\*\\\/)\/g; \/\/ 匹配单行或多行注释但是有个小瑕疵,就是会匹配到链接或带有'\/\/'的字符串:\/\/ 链接http:\/\/www.baidu.com\/xxx\/xxx\/xxxx\/xx...\/\/ 带有\/\/的字符串abskdak\/\/asdljslad\/\/sadajk上面...

正则表达式 删除不包含href的a链接
(<a[^(href)]+?>(.+?)<\/a>)这样就可以匹配到不含有href的a标签 既然不是a标签,那么target属性也不需要了吧 所以取出(.+?)那里的内容直接用span标签包围就行了

php解析出<a>标签中的“href”属性的值。
用正则取,例:str = '<A rel="nofollow" target="_blank" href=" http:\/\/m.tsci.com.cn\/iPhone" class="see-all">';preg_match("\/href=\\"(.*)\\" \/", $str, $a);print_r($a);echo $a[1];

正则提取a标签中的值
整个正则匹配的是一个a标签,第1组匹配的href的值,第2组匹配的你要的a标签的值 java示例:import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args) { Pattern pattern = Pattern.compile("<a .*?href=['\\"](.*?)...

相似回答