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;
}
}
分享到:
- 2009-11-27 21:41
- 浏览 1191
- 评论(0)
- 论坛回复 / 浏览 (0 / 3115)
- 查看更多
相关推荐
程序可以参考,非常好的思路建设,完美!
程序可以参考,非常好的思路建设,完美!
【毕业设计】java+springboot+vue二手车估值与销售平台实现(完整前后端+mysql+说明文档+LunW).zip
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
三菱PLC程序大型项目:QCPU+QD77MS集成电气开发系统,包含自动化设备控制程序、伺服模块设置与通信功能丰富的控制系统。,三菱PLC大型自动化控制项目:涵盖电气开发全套资料、高效程序结构设计与丰富通信功能应用,三菱PlC程序大型项目QCPU+QD77MS16 项目说明如下: 1.包含一套完整的电气开发系统资料(包含plc程序,触摸屏程序,伺服模块设置程序,程序开发地址规划表) 2.这套开发程序是用一套完美的程序结构进行设计,掌握这套程序结构后就可以开发各种自动化设备控制程序 3.提供的这套三菱plc程序开发地址规划表可以大大提高程序开发效率 4.三菱伺服运动模块设置程序中包含详细的各轴参数设置可以参考学习 5.触摸屏程序中也有一套完美的框架结构,掌握以后可以套用各种自动化设备 6.这套控制系统,包含几十个三菱伺服,三协机器人,BCR,CCD色彩检测仪等,用到串口通信,socket套接字通信,Cclink IE通信功能丰富多样。 ,三菱PLC程序; QCPU+QD77MS16; 电气开发系统资料; 程序结构; 开发效率; 伺服运动模块设置; 轴参数设置; 触摸屏程序框架; 三菱
freertos
【毕业设计】java-springboot+vue高校学科竞赛平台源码(完整前后端+mysql+说明文档+LunW).zip
CmsTop模板帮助手册
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容概要:本文提出了一种基于遗传算法(GA)优化的CNN-LSTM混合深度学习模型,用于预测韩国股市指数(KOSPI)的日收盘价。CNN用以提取特征,LSTM用于处理时间序列数据并发现长短期相关性,而GA则用于优化参数选择,确保模型最佳性能。研究表明,相比单一CNN、LSTM以及未优化的CNN-LSTM模型,提出的模型在误差率指标上显著提高预测准确性。具体而言,在均方误差(MSE)、平均绝对误差(MAE)和平均绝对百分比误差(MAPE)方面表现出更好的表现。作者还强调了未来改进方向,如纳入宏观经济因素和延长预测周期。 适合人群:对金融市场特别是股价预测有兴趣的研究人员、交易员和投资者。 使用场景及目标:本模型适用于利用深度学习进行股票价格波动预测的需求,为决策提供更具可靠性的依据。 其他说明:文章详细阐述了数据准备流程和技术细节,并提供了实验设置与结果分析图表。同时指出了一些潜在的发展趋势,比如融合多种分析手段提升精度的可能性及其局限性讨论。
CSDN Matlab武动乾坤上传的资料均是完整代码运行出的仿真结果图,可见完整代码亲测可用,适合小白; 1、完整的代码内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
燃料电池仿真模型:基于Cruise与Simulink联合开发,源文件全包的实战项目解析,燃料电池仿真模型:基于Cruise与Simulink联合开发,源文件全包的实战项目解析,燃料电池仿真模型燃料电池仿真模型,本模型基于Cruise软件和 Simulink软件共同搭建完成,并基于实际项目搭建,本资料包包含所有源文件 ,关键词:燃料电池仿真模型;Cruise软件;Simulink软件;实际项目;源文件;,Cruise Simulink 联合建模的燃料电池仿真模型全套源文件分享
内容概要:本文介绍了一种新型的关系数据合成方法,主要利用了图神经网络(GNN)和潜伏扩散模型。作者提出用异构图表示关系数据库,采用分阶段的方式:首先训练一个变分自编码器(VAE),获得表格数据的联合表征;然后通过图形嵌入对扩散过程进行条件化建模,从而捕捉跨不同表格属性之间的关系。这种组合允许模型既保持数据的结构性质又保存统计特性,适用于多表基准测试,并展示了优异的效果,特别是在多表保真度方面表现最佳。同时,本文探讨了一些潜在挑战如未见图形结构生成的可能性以及模型优化整合的可能性,为未来的研究方向提供了有价值的参考。 适合人群:从事机器学习尤其是深度学习领域的研究者、数据科学家或者想要进一步探索合成数据分析的应用和技术的企业从业者,他们关注于关系型数据的生成,有较深厚的技术背景并希望通过最新的深度学习进展提升自己的技能。 使用场景及目标:该方法旨在解决现有数据稀缺、隐私担忧等问题下高质量合成关系数据的需求。具体应用场景如医疗数据隐私保护下的仿真、复杂系统模拟等领域,帮助使用者提高决策效率并确保合规性和数据安全性。 阅读建议:建议从了解传统关系数据生成的限制出发,在此基础上深入了解文中提出
【毕业设计】java-springboot-vue多媒体素材库的开发与应用平台实现源码(完整前后端-mysql-说明文档-LunW).zip
COMSOL流体仿真下的流固耦合现象:圆管内流体驱动物块移动与扇叶转动探究,COMSOL流体仿真:流固耦合下的圆管内流体驱动动态模拟——流体驱动物块移动与扇叶转动研究,comsol流体仿真 ,流固耦合,圆管内流体驱动物块的移动和 流体驱动扇叶的转动 ,comsol流体仿真;流固耦合;圆管内流体驱动物块移动;流体驱动扇叶转动,Comsol流体仿真:圆管内流固耦合与流体驱动的物块移动及扇叶转动研究
AI大模型学习与使用-matlab-CH03.rar