求一正则,过滤style样式,但是如果color属性,则color属性保留

ieeeei 2009-12-01 03:49:15
示例代码

<span style="font:9px bold;background:black">3132132</span>
<span style="color:#48a2ff">3132132</span>
<span style="color:#48a2ff;float:left">3132132</span>



Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="style\s*=(\""|')[^""|'|color]*(""|')"
Str=Re.Replace(Str,"")
Set Re=Nothing

--先用上面正则去掉含有style属性,而且没有color颜色定义的style

Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="style\s*=(\""|')[^""|']*(color:#[^""|']{3,6})[^""|']*(""|')"
Str=Re.Replace(Str,"style=""$2""")
Set Re=Nothing

--再用上面的正则去只保留下style中的color属性



以上两段均组合使用,但是是结果却不正确。望高手指教。
...全文
316 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
junshanhudazhaxi 2009-12-01
  • 打赏
  • 举报
回复
我上面的正则在asp里通不过,还是用你自己换的方法解决.
junshanhudazhaxi 2009-12-01
  • 打赏
  • 举报
回复
正则一
(?<=style=("|'))[^"']*?(color:\s*#\w+)?\b[^'"]*(?=('|"))

正则二
\s*style=""

junshanhudazhaxi 2009-12-01
  • 打赏
  • 举报
回复
正则一:
(?<=style=("|'))[^"']*?(color:\s*#\w+)?\b[^'"]*(?=('|"))
正则二:
\s*style=""

先用正则一替换代码将变成:
<span style="">3132132</span>
<span style="color:#48a2ff">3132132</span>
<span style="color:#48a2ff">3132132</span>

再用正则二替换。
ieeeei 2009-12-01
  • 打赏
  • 举报
回复
换了种解决办法:
			Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="style\s*=(""|')[^""|']*(""|')"
Set Matchs=re.Execute(Str)

If Matchs.Count>0 Then
For Each Match In Matchs
If Instr(Lcase(Match.value),"color")>0 Then
Set reg=new RegExp
reg.IgnoreCase =True
reg.Global=True
reg.Pattern="[^""]*(color:[^;]*)[^""]*"
ReStr=Reg.Replace(Match.value,"$1")
Str=Replace(Str,Match.value,Restr)
Set Reg=Nothing
Else
Str=Replace(Str,Match.value,"")
End If
Next
End If
Set Re=Nothing

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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