惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
Cisco Talos Blog
Cisco Talos Blog
C
Check Point Blog
博客园_首页
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Martin Fowler
Martin Fowler
Recorded Future
Recorded Future
S
Security @ Cisco Blogs
L
LINUX DO - 最新话题
博客园 - 司徒正美
P
Privacy International News Feed
G
Google Developers Blog
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园 - 聂微东
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Scott Helme
Scott Helme
K
Kaspersky official blog
I
InfoQ
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
Webroot Blog
Webroot Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Microsoft Azure Blog
Microsoft Azure Blog
Spread Privacy
Spread Privacy
量子位
H
Hacker News: Front Page
Simon Willison's Weblog
Simon Willison's Weblog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
SecWiki News
SecWiki News
S
Security Affairs
Latest news
Latest news
人人都是产品经理
人人都是产品经理
C
CERT Recently Published Vulnerability Notes
S
Security Archives - TechRepublic
V
Visual Studio Blog
T
Troy Hunt's Blog
S
Secure Thoughts
F
Fortinet All Blogs
V
V2EX
The Register - Security
The Register - Security
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 小龟爬爬

利用浏览器 UA 信息解决多平台手机应用下载问题 Visual Studio 2010 Professional MSDN版已出,非试用版 基于OAI协议元数据收割的.NET资源 关于LNK2001错误的一些总结 C++预处理命令""和<>的区别 - 小龟爬爬 - 博客园 Mozilla Firefox 3.0 官方下载(附下载日证书截图) 在 Windows Server 2008 上安装 IIS 7.0 Visual Studio SharePoint工作流功能具有特定的安装要求 Mcafee官方卸载工具 磁盘变RAW文件系统解决办法 GridView列数字、货币和日期的显示格式 - 小龟爬爬 - 博客园 .net2.0 GRIDVIEW弹出删除对话框 - 小龟爬爬 - 博客园 FCKeditor出现&quot;this connector is disabled Please check the&quot;editor/filemanager/connectors/aspx/config.aspx&quot;错误的解决办法 FCKeditor出现&quot;XML request error: Internal Server Error(500)&quot;错误的解决办法 经常使用的判断string是否为数字的函数 .NET2.0学习笔记(一)访问母版页中的控件 string 与 stringBuilder Access 至少一个参数没有被指定值 解决方法 JavaScript使用技巧精萃
JS判断字符串格式是否合法
小龟爬爬 · 2007-12-02 · via 博客园 - 小龟爬爬

/**
 * 浏览器脚本函数列表
 * boolean isNumber(numStr)         :判断字符串是否是数值格式
 * boolean isValidString(szStr)     :判断字符串中是否含有非法字符"'\"><"
 * boolean isBlank(szStr)           :判断字符串是否为空字符串(或不包含除空格外的其他字符)
 * String trim(szStr)               :去掉字符串两端的空格
 * boolean isDateStr(ds)            :判断字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
 *                                    或 YYYY-MM-DD 或 HH:MM:SS
 * boolean isDatePart(dateStr)      :判断字符串是否为合法的日期格式:YYYY-MM-DD
 * boolean isTimePart(dateStr)      :判断字符串是否为合法的时间格式:HH:MM:SS
 * boolean chk_email(emailAddress)  :判断邮件地址格式是否合法
 */

/***********************************************************************
 * 判断一个字符串是否是数值格式
 */
function isNumber(numStr){
  return !isNaN(numStr);
}

/***********************************************************************
 * 判断一个字符串中是否含有下列非法字符
 */
voidChar = "'\"><";

function isValidString(szStr){
  for(i = 0 ; i < voidChar.length; i ++){
    aChar = voidChar.substring(i, i + 1);
    if(szStr.indexOf(aChar) > -1){
      return false;
    }
  }
  return true;
}

/***********************************************************************
 * 判断一个字符串是否为空字符串
 */
function isBlank(szStr){
  if(szStr.length < 1){
    return true;
  }

  for(i = 0; i < szStr.length; i ++){
    if(szStr.substring(i, i + 1) != ' '){
      return false;
    }
  }
  return true;
}

/***********************************************************************
 * 去掉一个字符串两端的空格
 */
function trim(szStr){
  //去掉字符串头部的空格
  while(szStr.length > 0){
    if( szStr.substring(0, 1) != ' '){
      break;
    }else{
      szStr = szStr.substring(1);
    }
  }

  //去掉字符串尾部的空格
  while(szStr.length > 0){
    if( szStr.substring(szStr.length - 1, szStr.length) != ' '){
      break;
    }else{
      szStr = szStr.substring(0,szStr.length - 1);
    }
  }
  return szStr;
}

/***********************************************************************
 * 判断一个字符串是否为合法的日期格式:YYYY-MM-DD HH:MM:SS
 * 或 YYYY-MM-DD 或 HH:MM:SS
 */
function isDateStr(ds){
  parts = ds.split(' ');
  switch(parts.length){
    case 2:
      if(isDatePart( parts[0] ) == true && isTimePart( parts[1] )){
        return true;
      }else{
        return false;
      }
    case 1:
      aPart = parts[0];
      if(aPart.indexOf(':') > 0 ){
        return isTimePart(aPart);
      }else{
        return isDatePart(aPart);
      }
    default:
      return false;
  }
}

/***********************************************************************
 * 判断一个字符串是否为合法的日期格式:YYYY-MM-DD
 */
function isDatePart(dateStr){
  var parts;

  if(dateStr.indexOf("-") > -1){
    parts = dateStr.split('-');
  }else if(dateStr.indexOf("/") > -1){
    parts = dateStr.split('/');
  }else{
    return false;
  }

  if(parts.length < 3){
  //日期部分不允许缺少年、月、日中的任何一项
    return false;
  }

  for(i = 0 ;i < 3; i ++){
  //如果构成日期的某个部分不是数字,则返回false
    if(isNaN(parts[i])){
      return false;
    }
  }

  y = parts[0];//年
  m = parts[1];//月
  d = parts[2];//日

  if(y > 3000){
    return false;
  }

  if(m < 1 || m > 12){
    return false;
  }

  switch(d){
    case 29:
      if(m == 2){
      //如果是2月份
        if( (y / 100) * 100 == y && (y / 400) * 400 != y){
          //如果年份能被100整除但不能被400整除 (即闰年)
        }else{
          return false;
        }
      }
      break;
    case 30:
      if(m == 2){
      //2月没有30日
        return false;
      }
      break;
    case 31:
      if(m == 2 || m == 4 || m == 6 || m == 9 || m == 11){
      //2、4、6、9、11月没有31日
        return false;
      }
      break;
    default:

  }

  return true;
}

/***********************************************************************
 * 判断一个字符串是否为合法的时间格式:HH:MM:SS
 */
function isTimePart(timeStr){
  var parts;

  parts = timeStr.split(':');

  if(parts.length < 2){
  //日期部分不允许缺少小时、分钟中的任何一项
    return false;
  }

  for(i = 0 ;i < parts.length; i ++){
  //如果构成时间的某个部分不是数字,则返回false
    if(isNaN(parts[i])){
      return false;
    }
  }

  h = parts[0];//年
  m = parts[1];//月

  if( h < 0 || h > 23){
  //限制小时的范围
    return false;
  }
  if( m < 0 || h > 59){
  //限制分钟的范围
    return false;
  }

  if(parts.length > 2){
    s = parts[2];//日

    if( s < 0 || s > 59){
    //限制秒的范围
      return false;
    }
  }

  return true;
}

function chk_email(email){
  invalid = "";

  if (!email){}
  //invalid = "请输入您的Email地址。";

  else {

    if ( (email.indexOf("@") == -1) || (email.indexOf(".") == -1) )
    invalid += "\n\nEmail地址不合法。应当包含'@'和'.';例如('.com')。请检查后再递交。";

    if (email.indexOf("your email here") > -1)
    invalid += "\n\nEmail地址不合法,请检测您的Email地址,在域名内应当包含'@'和'.';例如('.com')。";

    if (email.indexOf("\\") > -1)
    invalid += "\n\nEmail地址不合法,含有非法字符(\\)。";

    if (email.indexOf("/") > -1)
    invalid += "\n\nEmail地址不合法,含有非法字符(/)。";

    if (email.indexOf("'") > -1)
    invalid += "\n\nEmail地址不合法,含有非法字符(')。";

    if (email.indexOf("!") > -1)
    invalid += "\n\nEmail地址不合法,含有非法字符(!)。";

    if ( (email.indexOf(",") > -1) || (email.indexOf(";") > -1) )
    invalid += "\n\n只输入一个Email地址,不要含有分号和逗号。";

    if (email.indexOf("?subject") > -1)
    invalid += "\n\n不要加入'?subject=...'。";

  }

  if (invalid == ""){
    return true;
  }else{
    alert("输入的Email可能包含错误:" + invalid);
    return false;
  }
}