例字符串: 44,46,46,100,100,11 在这里出现了4个数字:11,44,46,100 现在该字符串出现的数字数目不固定,出现的数字不固定,重复出现的次数不固定,如也可能出现:44,46,53,46,44,46,72 该如何使例中的字符简化为:44,46,100,11,即出现的数字只出现一次,不重复?
<SCRIPT LANGUAGE="JAVASCRIPT"> function check(str){ Re = /(^|,)(\d+),(.*,)?(\2)(?:,|$)/ig;//匹配有重复数字的正则表达式 if(Re.test(str)){//验证是否有重复数字 outstr = str.replace(Re,"$1$2,$3");//过滤重复的数字 check(outstr);//递归验证过滤 return(outstr);//返回中间结果 } else{ Re = /,$/;//匹配最后逗号的正则表达式 outstr = str.replace(Re,"");//去掉最后的逗号 return(outstr);//返回最后结果 } }
</SCRIPT> <input type="text" size="30" name="txt" value="1,2,34,128,3,34,6,5,3,3,34,8"> <input type="button" value="过滤重复的数字" onclick="javascript:alert(check(txt.value))">
=================================
写成asp
<% Function check(instring) Dim objRegExp Set objRegExp = new RegExp objRegExp.IgnoreCase = True objRegExp.Global = True objRegExp.Pattern = "(^|,)(\d+),(.*,)?(\2)(?:,|$)" If objRegExp.test(instring) Then outstr = objRegExp.replace(instring,"$1$2,$3") check = check(outstr) Else objRegExp.Pattern = ",$" outstr = objRegExp.replace(instring,"") check = outstr End If End Function %>
<% =check(Request.Form("txt"))%>
=================================
分割符不是","而是"|"该怎么写?
变成"|"好做,将第一个正则表达式变为: (^|\|)(\d+)\|(.*\|)?(\2)(?:\||$) 第二个正则表达式变为: \|$
"$1$2|$3"
|