注册 登录
编程论坛 J2EE论坛

求助 文本框数据的过滤

chenbaichao 发布于 2008-06-10 21:39, 962 次点击
各位大虾:
   你们好!
   如何能将输入在文本框中的非法字符过滤?
   另外,如何来判断日期和邮箱地址的格式是否正确?
   有这样的代码,请大虾教我,小弟感激不尽!!!!!!
1 回复
#2
longrm2008-06-11 08:53
非法字符过滤:遍历该字符串,发现非法字符就替换掉;

程序代码:

package org.longrm.forum.util;

public class ServletUtils {

    /**
     * 过滤输入串里的非法字符,保证安全
     * @param input
     * @return
     */
    public static String filter(String input) {
        if(!hasSpecialChars(input))
            return input;
        
        StringBuffer filtered = new StringBuffer(input.length());
        char c;
        for(int i=0; i<input.length(); i++) {
            c = input.charAt(i);
            // 这里将非法字符替换
            switch(c) {
            case '<':
                filtered.append("&lt;");
                break;
            case '>':
                filtered.append("&gt;");
                break;
            case '"':
                filtered.append("&quot;");
                break;
            case '&':
                filtered.append("&amp;");
                break;
            default:
                filtered.append(c);
            }
        }
        return filtered.toString();
    }
    
    private static boolean hasSpecialChars(String input) {
        boolean flag = false;
        if(input!=null && input.length()>0) {
            char c;
            for(int i=0; i<input.length(); i++) {
                c = input.charAt(i);
                switch(c) {
                case '<':
                    flag = true;
                    break;
                case '>':
                    flag = true;
                    break;
                case '"':
                    flag = true;
                    break;
                case '&':
                    flag = true;
                    break;
                }
            }
        }
        return flag;
    }
    
    /**
     * 空值替换
     * @param org
     * @param replace
     * @return
     */
    public static String replaceIfMissing(String org, String replace) {
        if( (org==null) || (org.equals("")) ) {
            return replace;
        }
        else
            return org;
    }
}


判断日期和邮箱地址的格式:使用正则表达式就ok了,这里写下判断邮箱的代码:

    var email = document.getElementById("email").value;
    var myReg = /^[-a-zA-Z0-9_\.]+@([0-9A-Za-z][0-9A-Za-z-]+\.)+[A-Za-z]{2,5}$/;
    if(myReg.test(email)){  // 成功
         ...
1