小弟在做 过滤非法字符、处理SQL过滤,判断整形 超链接后面更的非法字符
 例如:http://localhost/NewsDetail.aspx?News_Type=1&News_Id=9这样就是正确的 在后面要是加一些特殊字符就后出错 
假如:http://localhost/NewsDetail.aspx?News_Type=1&News_Id=9'.;/[]为这样 如果不过滤的话 就会出错!
asp可以通过asc码来判断 
下面是我写的ASP的:
'处理标点符号、运算符号、大小字母、小写字母只留数字(48~57为0~9十个阿拉伯数字)
Function TeShuFuHao(a)
i=a
j=Len(i)
For m=1 To j
b=Asc(Mid(i,m,1))
If b>=48 And b<=57 Then 
n=n&Chr(b)
End If 
Next
TeShuFuHao=n
end functionasp.net的如下:
/// <summary>
    /// 过滤非法字符,判断整形
    /// </summary>
    /// <param name="inputString1">等待处理的字符串</param>
    /// <returns></returns>
    public static string InputText2(object inputString1)
    {
        if (inputString1 == null || inputString1.ToString() == "") return "";
        string inputString = inputString1.ToString();
        StringBuilder retVal = new StringBuilder();
        if (inputString != String.Empty)
        {
            inputString = inputString.Trim().ToLower();
            for (int i = 0; i < inputString.Length; i++)
            {
                switch (inputString[i])
                {
                    case '"':
                        retVal.Append("");
                        break;
                    case '<':
                        retVal.Append("");
                        break;
                    case '>':
                        retVal.Append("");
                        break;                    default:
                        retVal.Append(inputString[i]);
                        break;
                }
            }
            retVal = retVal.Replace("'", "");
            retVal = retVal.Replace(";", "");
            retVal = retVal.Replace(":", "");
            retVal = retVal.Replace("{", "");
            retVal = retVal.Replace("}", "");
            retVal = retVal.Replace("[", "");
            retVal = retVal.Replace("]", "");
            retVal = retVal.Replace("?", "");
            retVal = retVal.Replace(">", "");
            retVal = retVal.Replace("<", "");
            retVal = retVal.Replace(".", "");
            retVal = retVal.Replace(",", "");  
          
            
        }
        
        //if (!IsInt(retVal.ToString()))
        //{
        //    HttpContext.Current.Response.Redirect(SiteCommon.SiteConst.URL_ERROR_PAGE);
        //}
        
        
        return retVal.ToString();
    }
在上面红色的字体是替换了一些常见的特殊字符
如果按着这种写法一个一个的替换的话 很复杂 所以小弟希望大侠们能给一个简单的方法 直接把初了是数字的以外都替换为空!!小弟刚学.net 希望各位大哥大姐帮帮忙
 小弟在次谢过!!!!!!!

解决方案 »

  1.   

    sorry, 刚才写的是 javascript 的,下面是 ASP.NET
    using System.Text.RegularExpressions;
    string retVal = "你的字符串";
    Regex regex = new Regex(@"[^\d]", RegexOptions.Compiled | RegexOptions.IgnoreCase);retVal = regex.Replace(retVal, "");
      

  2.   

    RegexOptions.Compiled ¦ RegexOptions.IgnoreCase
    这个" ¦ "是什么 或者(||)关系 还是且(&&)关系
      

  3.   

    Regex.Match(需要处理的字符串, "\\d+").Value   匹配数字。
      

  4.   

    不是逻辑判断的“或”,是“或”运算。类似于对“位”的或运算,
    这里是让此 Replace 操作忽略大小写,同时指定将正则表达式编译为程序集,以加快速度。