28,409
社区成员




比如字符串:str="
<p>A:好无聊啊……我给你讲笑话吧!</p>
<p align="center"><img src="images/a.gif" alt="" border="0"/></p>
<p>A:有一回,土豆和年糕打架,土豆很生气,一脚就把年糕踢到海里了。</p>
<p>Q:哦……然后呢?</p>
<p>A:讲完了阿,下面讲第二个。</p>
<p>Q(欲哭无泪啊……)</p>
<p>A:从前有一对<a href="#">恋人</a>,在他们决定结婚的时候,那男生需要服兵役。他们便到了海边,说好三年后的这一天在海边相见,男孩并给了女孩一枚戒指作为婚戒。可是,三年过去了,那女孩并没有等到男孩,她很伤心,便把戒指丢进了大海里。其实是女孩误解了约会地点,男孩一直在等她。可是就这样错过了,成为了遗憾。男孩也很伤心,便决定住在海边等女孩。有一天他出去打鱼,你猜他打到了什么?。</p>
<p>Q:戒指吗?</p>
<p>A:不是拉!是年糕阿!哈哈哈哈哈…………</p>
<p>Q:真冷啊……</p>
<p align="center"><img src="images/b.gif" alt="" border="0"/></p>
<p>A:还是那对恋人。有一天男孩听说女孩要<a href="#">结婚</a>了,十分伤心,便把自己那枚婚戒也丢进了海里。几天后,他打了一条鱼吃。刚夹了一口鱼,便咬到一个很硬的东西,吐出来一看,你猜他看到了什么</p>
<p>Q:<strong>戒指</strong>吗?</p>
<p>A:不是!</p>
<p>Q:年糕吗?</p>
<p>A:哈,怎么会是年糕呢。</p>
<p align="center"><img src="images/c.gif" alt="" border="0"/></p>
<p>Q:那是什么?</p>
<p>A:鱼骨头呗!</p>
<p>终于Q挺不住了,感冒了一个多礼拜……</p>
"
其中,"<img>"、"<a>"、"<strong>"、"<p>"等标签个数不固定,标签内容不固定(如:<p>和<p align="center">等)。字符串str的长度也不固定。
现在的问题是如何可以在字符串str中间插入一个字符串strs="abcd",使得字符串strs不在任意标签(如:"<img>"、"<a>"、"<strong>"、"<p>"、"</p>"等等)的“<”和“>”之间。
Dim a, b, c
a = "<p>asdfa<a>sdf<br/>afsd</a>asdfas</p>"
b = "xxx"
With New RegExp
.Pattern = "^[\d\D]{" & (Len(a)\2) & ",}?(?![^<]*>)(?!(?:(?!<a\b)[\d\D])*</a>)"
c = .Replace(a, "$&" + Replace(b, "$", "$$"))
End With
Response.Write c
str="gdfgdggd<p>A:好无聊啊……我给你讲笑话吧!</p><p align=""center""><img src=""images/a.gif"" alt="""" border=""0""/></p><p>A:有一回,土豆和年糕打架,土豆很生气,一脚就把年糕踢到海里了。</p><p>Q:哦……然后呢?</p><p>A:讲完了阿,下面讲第二个。</p><p>Q(欲哭无泪啊……)</p><p>A:从前有一对<a href=""#"">恋人</a>,在他们决定结婚的时候,那男生需要服兵役。他们便到了海边,说好三年后的这一天在海边相见,男孩并给了女孩一枚戒指作为婚戒。可是,三年过去了,那女孩并没有等到男孩,她很伤心,便把戒指丢进了大海里。其实是女孩误解了约会地点,男孩一直在等她。可是就这样错过了,成为了遗憾。男孩也很伤心,便决定住在海边等女孩。有一天他出去打鱼,你猜他打到了什么?。</p><p>Q:戒指吗?</p><p>A:不是拉!是年糕阿!哈哈哈哈哈…………</p><p>Q:真冷啊……</p><p align=""center""><img src=""images/b.gif"" alt="""" border=""0""/></p><p>A:还是那对恋人。有一天男孩听说女孩要<a href=""#"">结婚</a>了,十分伤心,便把自己那枚婚戒也丢进了海里。几天后,他打了一条鱼吃。刚夹了一口鱼,便咬到一个很硬的东西,吐出来一看,你猜他看到了什么</p><p>Q:<strong>戒指</strong>吗?</p><p>A:不是!</p><p>Q:年糕吗?</p><p>A:哈,怎么会是年糕呢。</p><p align=""center""><img src=""images/c.gif"" alt="""" border=""0""/></p><p>Q:那是什么?</p><p>A:鱼骨头呗!</p><p>终于Q挺不住了,感冒了一个多礼拜……</p>"
Dim regEx, Match, Matches '建立变量。
Set regEx = New RegExp '建立正则表达式。
regEx.Pattern = "(?:<[^<>]+>)" '设置模式。
regEx.IgnoreCase = true '设置是否区分字符大小写。
regEx.Global = True '设置全局可用性。
Set Matches = regEx.Execute(str) '执行搜索。Matches(1).SubMatches(0)
znum=Matches.count
Randomize
RndNumber=int((znum+1)*rnd)
i=0
RetStr=""
For Each Match in Matches '遍历匹配集合。
if i=RndNumber then
str=mid(str,1,Match.FirstIndex)&"<font color='red'>"&b&"</font>"&mid(str,Match.FirstIndex+1,len(str))
exit for
end if
i=i+1
Next
response.Write str
Dim a, b, c
a = "<p>asdfasf<br/>asdfas</p>"
b = "xxx"
With New RegExp
.Pattern = "^[\d\D]{" & (Len(a)\2) & ",}?(?=[^>]*<)"
c = .Replace(a, "$&" + Replace(b, "$", "$$"))
End With
Response.Write c
<script type="text/javascript">
var str2="abcd";
var str="<p>0</p><p>1</p><p>2</p>";
var obj=document.createElement("div");
obj.innerHTML=str;
var demo=obj.getElementsByTagName("p");
var L=demo.length;
var r=Math.floor(Math.random()*L);
obj.insertBefore(document.createTextNode(str2),demo[r]);
str=obj.innerHTML;
alert(str);
</script>