首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

高分求解“+1y -2m +3w -4d”这种日期表示法的正则表达式,该怎么处理

2012-06-09 
高分求解“+1y -2m +3w -4d”这种日期表示法的正则表达式需要验证jQueryUI Datepicker的文本框中用户输入的

高分求解“+1y -2m +3w -4d”这种日期表示法的正则表达式
需要验证jQueryUI Datepicker的文本框中用户输入的日期参数格式是否符合要求,其中y,m,w,d分别表示年,月,周,日,4者任意搭配,但不能重复出现,例如“+1y -2m +3w -4d”表示从今天开始往后1年,再往前2个月,再往后3周,再往前4天的日期,请问各位前辈这个正则该怎么写呢?

[解决办法]

JScript code
> var p = /[+-][0-9]+[ymdw]/g;undefined> '+1y -2m +3w -4d'.match(p)[ '+1y',  '-2m',  '+3w',  '-4d' ]>
[解决办法]
JScript code
var reg = /^(?!.*?([ymwd]).*?\1)([+-]\d+[ymwd] *){1,4}$/;
[解决办法]
var date={
reg:/^([+-]\d+[ymwd] *){4}$/
}
date.check=function(context){
if(context.indexOf('y')!=-1){
if(context.indexOf('m')!=-1){
if(context.indexOf('w')!=-1){
if(context.indexOf('d')!=-1){
if(date.reg.test(context)){
return true;
}
}
}
}
}
return false;
}
alert(date.check("+1y -m +3w -4d"));
一定要用正则吗?不会了
[解决办法]
var reg = /^(?!.*?(?:[ymwd]).*?\1)(?:[+-]\d+[ymwd] *){1,4}$/;
[解决办法]
JScript code
var check = function(s){  var r = /^(?:\s*[-+]\d+[ymwd]\s*)+$/i;  var isFormatRight = r.test(s);     if(!isFormatRight) { return false; }     var i, len, repeat=false, map={}, w, a = s.match(/[a-z]/gi);   if(a && a.length <= 4){    for(i=0, len=a.length; i<len; i++){      w = a[i].toLowerCase();      if(map.hasOwnProperty(w)){        repeat = true;        break;      }      map[w] = null;    }  }else{    repeat = true;  }  return !repeat;   }alert(check(' +1y -2m +3w -4d'));
[解决办法]
JScript code
s1 = '+1y -2m +3w -4d';s2 = '+1y -2m +3y -4d';document.write(s1+' : '+check(s1));document.write(s2+' : '+check(s2));function check(s) {  if(/([ymwd]).*\1/.test(s)) return false;  return /[-+][0-9]+[ymwd]/.test(s);} 

热点排行