JS 高手请进 ,!!!

怎么用JS 判断输入串是否符合 标识符 的规范,禁止输入串是合法的标识符?

[quote] [color=red]但是我需要判断是否是 标识符 的JS哦[/color] [/quote]

别再犹豫! 蔡老板经典用法! 满足你! 呵呵

function isValidIdentifier(str){

try{

eval("var "+str+"=0;");

return true;

}catch(e){

return false;

}

}

[code="java"]JS判断字符串格式是否合法 /**

  • 浏览器脚本函数列表
  • 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;
}
}
[/code]

嗯。楼上的很全面了。可以好好参考!

那你就要参考规范了,什么不能以数字开头了,开头不能是特属字符了,一个个来!

[code="js"]function isValidIdentifier(str){
try{
eval("var "+str+"=0;");
return true;
}catch(e){
return false;
}
}[/code]

定义一个,报错了就是不能用的!

[color=red]定义一个,报错了就是不能用的![/color]

经典用法! :idea:

function isValidIdentifier(str){

try{

eval("var "+str+"=0;");

return true;

}catch(e){

return false;

}

}

[quote]定义一个,报错了就是不能用的![/quote]
这个必须得顶!!!!!

:wink: :wink: :wink: :wink: :wink: :wink:

function isValidIdentifier(str){
try{
eval("var "+str+"=0;");
return true;
}catch(e){
return false;
}
}

我也是来膜拜的