关于匹配正则问题

時が流れ 2019-08-23 02:09:43
最近碰到一个比较麻烦的问题,不知道怎么解决好。希望大神给个建议~~

字符串:
<!DOCTYPE html PUBLIC "-\//W3C\//DTD XHTML 1.0 Transitional\//EN" "http:\//www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd">
<html xmlns="http:\//www.w3.org\/1999\/xhtml">
<head>
<meta content="text\/html; charset=UTF-8" http-equiv="Content-Type">
<title>testtitle<\/title>
<style type="text\/css">
.content>div>img {
width: 100%;
}
<\/style>
<\/head>
<body style="margin: 0px; padding: 0px;">
<div style="width: 1200px; margin: 0px auto;">
<div class="content">
<div><img src="images\/1_01.jpg"><\/div>
<div><img src="images\/1_02.jpg"><\/div>
<div><img src="images\/1_03.jpg"><\/div>
<\/div>
<\/div>
<!--留言板开始-->
<div style="text-align:center; width:1200px; background:#fff; margin:0 auto;">
<script>var id_project = 9482;<\/script>
<script>document.write("<script type='text\/javascript' src='http:test.test.com" + Math.random() + "'><\/scri" +"pt>");<\/script>
<\/div>
<!--留言板结束-->
<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >
<p>testname<\/p>
<p>testaddress<\/p>
<p>testicp<\/p>

<\/div>
<script>
this is test 53kf code;
<\/script>
<\/body>
<\/html>


需要精确匹配到红字区域的版权内容。。但是正则不知道怎么写比较合适。
我们需要做一个克隆页面时把版权替换的功能。
但是,由于我们之前的页面写的比较随意,导致div里面什么格式的都有。
需要匹配<div style="*****">中间的全部内容</div>

希望大神能给个好的建议,感谢感谢
...全文
121 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
時が流れ 2019-08-23
  • 打赏
  • 举报
回复
引用 8 楼 老鼠拧刀满街找猫 的回复:

var result=html.replace(/(<!--留言板结束-->[\n\r\s]*<div\b[^>]*>)([\s\S]*)(<\/div>[\n\r\s]*<script\b[^>]*>)/ig,"$1"+"填充的内容"+"$3");
恩。。在这个板式下能生效。谢谢啦~!!我再研究研究看看能不能兼容别的板式。
天际的海浪 2019-08-23
  • 打赏
  • 举报
回复
引用 9 楼 時が流れ 的回复:
[quote=引用 7 楼 天际的海浪 的回复:] [quote=引用 6 楼 時が流れ 的回复:] [quote=引用 5 楼 老鼠拧刀满街找猫 的回复:]

html.replace(/<p>[\s\S]+<\/p>/i,'填充的html内容');
引用 4 楼 天际的海浪 的回复:
要替换的内容中不包含</div>的话可以用 str = str.replace(/(<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >)[\s\S]*?(<\/div>)/,"$1新内容$12") 要是包含</div>的话就必须用正则的平衡组语法,但是目前所有的js都不支持平衡组,就不好办了。
恩。。。可能我表达不太清楚。。 我是只想取到<div*********>(排除)********(获取内容)</div>(排除)中间的内容。 因为现在不确定<div后面跟着什么内容。 但获取的必须是版权的那个div [/quote] 那你这个版权的div有什么独一无二的特征?好与其它的div区分开来.[/quote] 现在最蛋疼的就是没有什么明显特征。只能保证是里面内容肯定有公司和谨慎俩字。。。。[/quote] 也可以用div的上下文做为特征,就如 #8 楼的方法
時が流れ 2019-08-23
  • 打赏
  • 举报
回复
引用 7 楼 天际的海浪 的回复:
[quote=引用 6 楼 時が流れ 的回复:] [quote=引用 5 楼 老鼠拧刀满街找猫 的回复:]

html.replace(/<p>[\s\S]+<\/p>/i,'填充的html内容');
引用 4 楼 天际的海浪 的回复:
要替换的内容中不包含</div>的话可以用 str = str.replace(/(<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >)[\s\S]*?(<\/div>)/,"$1新内容$12") 要是包含</div>的话就必须用正则的平衡组语法,但是目前所有的js都不支持平衡组,就不好办了。
恩。。。可能我表达不太清楚。。 我是只想取到<div*********>(排除)********(获取内容)</div>(排除)中间的内容。 因为现在不确定<div后面跟着什么内容。 但获取的必须是版权的那个div [/quote] 那你这个版权的div有什么独一无二的特征?好与其它的div区分开来.[/quote] 现在最蛋疼的就是没有什么明显特征。只能保证是里面内容肯定有公司和谨慎俩字。。。。
  • 打赏
  • 举报
回复

var result=html.replace(/(<!--留言板结束-->[\n\r\s]*<div\b[^>]*>)([\s\S]*)(<\/div>[\n\r\s]*<script\b[^>]*>)/ig,"$1"+"填充的内容"+"$3");
天际的海浪 2019-08-23
  • 打赏
  • 举报
回复
引用 6 楼 時が流れ 的回复:
[quote=引用 5 楼 老鼠拧刀满街找猫 的回复:]

html.replace(/<p>[\s\S]+<\/p>/i,'填充的html内容');
引用 4 楼 天际的海浪 的回复:
要替换的内容中不包含</div>的话可以用 str = str.replace(/(<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >)[\s\S]*?(<\/div>)/,"$1新内容$12") 要是包含</div>的话就必须用正则的平衡组语法,但是目前所有的js都不支持平衡组,就不好办了。
恩。。。可能我表达不太清楚。。 我是只想取到<div*********>(排除)********(获取内容)</div>(排除)中间的内容。 因为现在不确定<div后面跟着什么内容。 但获取的必须是版权的那个div [/quote] 那你这个版权的div有什么独一无二的特征?好与其它的div区分开来.
時が流れ 2019-08-23
  • 打赏
  • 举报
回复
引用 5 楼 老鼠拧刀满街找猫 的回复:

html.replace(/<p>[\s\S]+<\/p>/i,'填充的html内容');
引用 4 楼 天际的海浪 的回复:
要替换的内容中不包含</div>的话可以用 str = str.replace(/(<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >)[\s\S]*?(<\/div>)/,"$1新内容$12") 要是包含</div>的话就必须用正则的平衡组语法,但是目前所有的js都不支持平衡组,就不好办了。
恩。。。可能我表达不太清楚。。 我是只想取到<div*********>(排除)********(获取内容)</div>(排除)中间的内容。 因为现在不确定<div后面跟着什么内容。 但获取的必须是版权的那个div
  • 打赏
  • 举报
回复

html.replace(/<p>[\s\S]+<\/p>/i,'填充的html内容');
天际的海浪 2019-08-23
  • 打赏
  • 举报
回复
要替换的内容中不包含</div>的话可以用 str = str.replace(/(<div style="margin-bottom:0px;padding:10px 0;font-size:12px; line-height:22px; text-align:center; color:#000000;" >)[\s\S]*?(<\/div>)/,"$1新内容$12") 要是包含</div>的话就必须用正则的平衡组语法,但是目前所有的js都不支持平衡组,就不好办了。
時が流れ 2019-08-23
  • 打赏
  • 举报
回复
引用 2 楼 老鼠拧刀满街找猫 的回复:
用一个div包裹起来,然后处理这个div的内容就行了
不是的。是用node.js来进行读取文件,然后进行匹配替换。但是读取出来字符串后无法精准匹配到目标内容
  • 打赏
  • 举报
回复
用一个div包裹起来,然后处理这个div的内容就行了
  • 打赏
  • 举报
回复
<div id="waitToReplace">
<p>testname<\/p>
<p>testaddress<\/p>
<p>testicp<\/p>
</div>

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧