欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

再过滤?解决思路

更新时间: 2014-01-05 00:56:35 责任编辑: Author_N1

 

再过滤?
如下代码:

<%
s="1348769887<br/>8769887<br/>134988727764"
s=RP(s)
 
response.Write s
%>
<script runat="server" language="jscript">
    function RP(v) {
        var whiterx = /(8769887|8769886)/;//修改你的这个正则如果还有其他白名单
        return v.replace(/(\d{3})(\d{3,})/g, function ($0, $1, $2) {
            if (whiterx.test($0)) return $0;//包含白名单中不替换
            return $1 + '<font color="red">' + $2.replace(/\d/g, '*') + '</font>';
        });
    }
</script>


如果s字符串是这样: s = "1348769887<br/>8769887<br/>134988727764<br/><img src='8769887.jpg'>"

除图片之外的,其它要符合RP规则的。。其正则应该要怎么改?  谢谢!
--参考方法--
<%
function RP(byval str)
if isnull(str) then exit function
dim re, reWhite, i, Matches, Match, MyArray()
set re = new RegExp
re.IgnoreCase = true
re.Global = true
re.Pattern = "(?:<img[\s\S]*?>)"

set reWhite = new RegExp
reWhite.Pattern = "8769887
--参考方法--
8769886"

Set Matches =re.Execute(str)

i = 0
For Each Match in Matches
ReDim Preserve MyArray(i)
MyArray(i) = Match.Value
str = replace(str, Match.Value, "<@#"&i&"#@>")'
i = i + 1
Next

re.Pattern = "\d{4,}"

' 开始替换
Set Matches =re.Execute(str)
For Each Match in Matches
if not reWhite.test(Match.Value) then
str = replace(str, Match.Value, left(Match.Value, 3) & string(len(Match.Value)-3, "*"))
end if
Next
' 结束替换

if i > 0 then
for i = 0 to ubound(MyArray)
str = replace(str, "<@#"&i&"#@>", MyArray(i))
next
end if
RP = str
end function

s="1348769887<br/><img src='8769887.jpg'>8769887<br/>134988727764<br/><img src='87691887.jpg'>134988727764"

response.Write RP(s)
%>










重写了下。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 00:56:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1657/
本文WWW.DOC100.NET DOC100.NET版权所有。