2008-11-07 02:51
/** * 得到中英文字符长 * @param {} str * @return {} */ function LengthB(str){ var p1 = new RegExp('%u..', 'g') var p2 = new RegExp('%.', 'g') return escape(str).replace(p1, '').replace(p2, '').length } /** * 过滤所有空格字符 * @param {Object} str */ function jsTrim(str){ str += ""; while ((str.charAt(0) == ' ') || (str.charAt(0) == '???') || (escape(str.charAt(0)) == '%u3000')) str = str.substring(1, str.length); while ((str.charAt(str.length - 1) == ' ') || (str.charAt(str.length - 1) == '???') || (escape(str.charAt(str.length - 1)) == '%u3000')) str = str.substring(0, str.length - 1); return str; } /** * 过滤中间字符串和多个空格 * @param {Object} inputString */ function trim(inputString){ if (typeof inputString != "string") { return inputString; } var retValue = inputString; var ch = retValue.substring(0, 1); while (ch == " ") { //检查字符串开始部分的空格 retValue = retValue.substring(1, retValue.length); ch = retValue.substring(0, 1); } ch = retValue.substring(retValue.length - 1, retValue.length); while (ch == " ") { //检查字符串结束部分的空格 retValue = retValue.substring(0, retValue.length - 1); ch = retValue.substring(retValue.length - 1, retValue.length); } while (retValue.indexOf(" ") != -1) { //将文字中间多个相连的空格变为一个空格 retValue = retValue.substring(0, retValue.indexOf(" ")) + retValue.substring(retValue.indexOf(" ") + 1, retValue.length); } return retValue; } /** * 过滤字符串,指定过滤内容,如果内容为空,则默认过滤 '~!@#$%^&*()-+." * @param {Object} str * @param {Object} filterStr * * @return 包含过滤内容,返回True,否则返回false; */ function FilterStr(str, filterStr){ filterStr = filterStr == "" ? "'~!@#$%^&*()-+.\"" : filterStr var ch; var i; var temp; var error = false;//当包含非法字符时,返回True for (i = 0; i <= (filterStr.length - 1); i++) { ch = filterStr.charAt(i); temp = str.indexOf(ch); if (temp != -1) { error = true; break; } } return error; } /** * 过滤指定内容字符串 * @param {Object} str 检查字符串 * @param {Object} filterStr 过滤字符串,内容为空,则默认过滤 '~!@#$%^&*()-+." * @param {Object} alertStr 弹出对话内容 * @param {Object} idStr 出错返回出错字段ID */ function ISFilterStr(str, filterStr, alertStr, idStr){ alertStr = "对不起,您输入的 " + alertStr + " 不允包含 " + filterStr + " 非法字符"; if (FilterStr(str, filterStr)) this.AlertAndRFalse(alertStr, idStr); } /** * 检查是否为网址 * @param {} str_url * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>不是</b>网址返回false; */ function IsURL(str_url, alertStr, idStr){// 验证url alertStr = alertStr + " 格式不正确!"; var strRegex = "^((https|http|ftp|rtsp|mms)?://)" + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" // ftp的user@ + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184 + "|" // 允许IP和DOMAIN(域名) + "([0-9a-z_!~*'()-]+\.)*" // 域名- www. + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名 + "[a-z]{2,6})" // first level domain- .com or .museum + "(:[0-9]{1,4})?" // 端口- :80 + "((/?)|" // a slash isn't required if there is no file name + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$"; var re = new RegExp(strRegex); if (!re.test(str_url)) this.AlertAndRFalse(alertStr, idStr); } /** * 检查是否为电子邮件 * @param {} str * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>不是</b>电子邮件返回false; */ function IsEmail(str, alertStr, idStr){ alertStr = alertStr + " 格式不正确!"; var re = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/; if (!re.test(str)) this.AlertAndRFalse(alertStr, idStr); } /** * 检查是否为数字 * @param {} str * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>不是</b>数字返回false; */ function IsNum(str, alertStr, idStr){ alertStr = alertStr + " 应该由数字组成!"; var re = /^[\d]+$/ if (!re.test(str)) this.AlertAndRFalse(alertStr, idStr); } /** * 检查数值是否在给定范围以内<br> * @param {} str_num * @param {} moreLen 应该大于或者等于的数值 * @param {} lessLen 应该小于或者等于的数值 * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>小于最小数值或者大于最大数值</b>数字返回false; */ function IsRangeNum(str_num, moreLen, lessLen, alertStr, idStr){ IsNum(str_num, alertStr, idStr); if (moreLen != "") { alertStr = alertStr + " 数值不能小于 " + moreLen; if (str_num < moreLen) this.AlertAndRFalse(alertStr, idStr); } if (lessLen != "") { alertStr = alertStr + " 数值不能大于 " + lessLen; if (str_num > lessLen) this.AlertAndRFalse(alertStr, idStr); } if (moreLen == "" && lessLen == "") this.AlertAndRFalse("没有定义最大最小长度!", idStr); } /** * 检查是否为合格字符串(不区分大小写)<br> * 长度在6至20位,并且是由a-z0-9_组成的字符串 * @param {} str 检查的字符串 * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>不是</b>"长度在6至20位且由a-z0-9_"组成返回false; */ function IsLicit(str, alertStr, idStr){ alertStr = "对不起," + alertStr + " 不能为空并且只能由 0到9 a到z 下划线 的6到20位组成! "; var re = /^[_0-9a-zA-Z]{6,20}$/ if (!re.test(str)) this.AlertAndRFalse(alertStr, idStr); } /** * 检查二个字符串是否相等 * @param {} str1 第一个字符串 * @param {} str2 第二个字符串 * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} 字符串不相等返回false; */ function IsStrEquals(str1, str2, alertStr, idStr){ alertStr = "二次 " + alertStr + " 不一致!"; if (str1 != str2) this.AlertAndRFalse(alertStr, idStr); } /** * 检查字符串是否在给定长度范围以内(中文字符以2个字节计算)<br> * * @param {} str 检查的字符 * @param {} moreLen 应该大于或者等于的长度 * @param {} lessLen 应该小于或者等于的长度 * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>小于最小长度或者大于最大长度</b>数字返回false; */ function IsRange(str, moreLen, lessLen, alertStr, idStr){ var strLen = LengthB(str); if (moreLen != "") { alertStr = alertStr + " 应该大于或等于 " + moreLen + " 个字节长度!"; if (strLen < moreLen) this.AlertAndRFalse(alertStr, idStr); } if (lessLen != "") { alertStr = alertStr + " 应该小于或等于 " + lessLen + " 个字节长度!"; if (strLen > lessLen) this.AlertAndRFalse(alertStr, idStr); } if (moreLen == "" && lessLen == "") this.AlertAndRFalse("没有定义最大最小长度!", idStr); } /** * 检查字符串是否小于给定长度范围(中文字符以2个字节计算)<br> * @param {} str 字符串 * @param {} lessLen 小于或等于长度 * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>大于给定长度</b>数字返回false; */ function IsLess(str, lessLen, alertStr, idStr){ IsRange(str, "", lessLen, alertStr, idStr); } /** * 检查字符不为空 * @param {} str * @param {} alertStr 弹出字段内容 * @param {} idStr 光标定位的字段ID<b>只能接收ID</b> * @return {Boolean} <b>字符为空</b>返回false; */ function IsEmpty(str, alertStr, idStr){ alertStr = alertStr + " 不能为空!"; if (str == "") this.AlertAndRFalse(alertStr, idStr); } /** * 弹出警示框,并定位到出错字段上 * @param {} alertStr 弹出警告框内容 * @param {} idStr 返回字段焦点 * @return {Boolean} 返回false */ function AlertAndRFalse(alertStr, idStr){ alert(alertStr); document.getElementById(idStr).focus(); throw "valueErr"; } // JavaScript Document
调用示例
function checkForm() { try { var title = trim(document.getElementById('title')); //文章标题 IsEmpty(title,"文章标题","title");//不可为空 IsLess(title,100,"文章标题","title");//标题应少于100个字符长 ISFilterStr(title, "~`!@#$%^&*()-=_+[]{}|\\;':\",./<>?", "文章标题","title")//标题不允许包含这些非法字符 } catch(err) { if(err == "valueErr") return false; } }