正则表达式 验证 ****年**月

来源:互联网 发布:淘宝虚拟试衣功能在哪 编辑:程序博客网 时间:2024/05/01 05:20
因为要验证的字符串中 需要包含固定的相关中文汉字
所以 要先取得这些汉字的ASCII码表示
然后才能利用这些 构建验证规则
示例如下

/*--------------------------------------------------
* 函數名稱: GetReportDate
* 目    的: 得到符合报表要求的相关日期
* 參    數: 
*           strDate       :日期字符串
*           reportDateType:可选值 Month ,HalfMonth ,
*
*       Eg: GetReportDate("2006年12月","Month") = 20061216
*           GetReportDate("2006年12月上半月","HalfMonth") = 20061201
* xx. YYYY/MM/DD   VER     AUTHOR      COMMENTS
*  1. 2006/12/13   1.00    Free        Create
------------------------------------------------------
*/

function GetReportDate(strDate,reportDateType)
{
    
var paraDateType = reportDateType.trim().toLowerCase();    
    
//判断 reportDateType 是否输入正确
    var TypeEnum = "month,halfmonth";
    
if ( TypeEnum.indexOf(paraDateType) == -1 ) 
        
return false;            

    
//判断 strDate 的格式 是否与reportDateType相匹配
    var paraDate = strDate.trim();    
    
var regStr,regResult;
    
var strLength = paraDate.length;
    
//对于 Month 类的输入日期
    if(paraDateType == "month")
    
{
//       var yearASCII = escape("年");//得到 “年” 的ASCII码 /u5E74
//
       var monthASCII = escape("月"); ////得到 “月” 的ASCII码 /u6708
         regStr = //d{4}(/u5E74)/d{1,2}(/u6708)/;
    }
    
    regResult 
= regStr.test(paraDate);    
    
if!regResult ) 
        
return ;
        
    
//进行相关转换
    var returnDate ,tmpYear,tmpMonth,tmpDay;    

    
// Month 类的输入日期
    if(paraDateType == "month")
    
{
        tmpYear 
= paraDate.substr(0,4);
        tmpMonth 
= paraDate.substr(5,strLength - 6);
        
if(tmpMonth > 12 ||tmpMonth < 1)
        
{
            
return;
        }

        
else
        
{
            
if(tmpMonth.length == 1)
            
{
                tmpMonth 
= "0" + tmpMonth;
            }

        }

        
//当月的16号
        returnDate = tmpYear + tmpMonth + "16";
    }

    
    
//返回结果
    return returnDate;  
}