function convertTo(str){
var arr = str.split('.'),//将原字符串以.分割字符串为数组
zeroize = ['000','00','0',''];//补零数组
return arr.length == 3
? [
//转换凭证字代码[容错:当其超出数组长度时返回原字符串]
['RB','PC','PB','记'][arr[0]] || arr[0],
//转换年份::以截取的第一个字符作为数组的索引,返回其匹配值[容错:超出定义的数组长度时返回当前年份]
([new Date().getFullYear(),new Date().getFullYear() - 1][arr[1].substr(0,1)] || new Date().getFullYear())
+
//转化月份,长度不足两位时补0
zeroize[arr[1].length] + arr[1].substr(1),
//转换序号::长度大于3时,返回前3位,长度等于0时,返回000
arr[2].length > 3
? arr[2].substr(0,3) //容错:长度大于3时
: zeroize[arr[2].length] + arr[2]
].join('-')
: '字符串格式错误:'+ str;
};
alert([convertTo('0.01.1'),convertTo('1.110.12'),convertTo('3.03.198'),convertTo('2.112.13')].join('\n\n'));
var arr = str.split('.'),//将原字符串以.分割字符串为数组
zeroize = ['000','00','0',''];//补零数组
return arr.length == 3
? [
//转换凭证字代码[容错:当其超出数组长度时返回原字符串]
['RB','PC','PB','记'][arr[0]] || arr[0],
//转换年份::以截取的第一个字符作为数组的索引,返回其匹配值[容错:超出定义的数组长度时返回当前年份]
([new Date().getFullYear(),new Date().getFullYear() - 1][arr[1].substr(0,1)] || new Date().getFullYear())
+
//转化月份,长度不足两位时补0
zeroize[arr[1].length] + arr[1].substr(1),
//转换序号::长度大于3时,返回前3位,长度等于0时,返回000
arr[2].length > 3
? arr[2].substr(0,3) //容错:长度大于3时
: zeroize[arr[2].length] + arr[2]
].join('-')
: '字符串格式错误:'+ str;
};
alert([convertTo('0.01.1'),convertTo('1.110.12'),convertTo('3.03.198'),convertTo('2.112.13')].join('\n\n'));
var o2={'0':new Date().getFullYear(),'1':parseInt(new Date().getFullYear())-1}
var addStr=['0','00'];
function convert(obj){
var msg='';
var rule=/^[0-3][.]\d{1,3}[.]\d{1,3}$/;
var rule2=/^([0-3])[.]([0-1]((0[1-9])|(1[0-2])))[.](\d{1,3})$/;
var array=[];
if (obj && typeof obj=='string') {
array=obj.split('.');
if (array[1].length<3){
array[1]=addStr[2-array[1].length]+array[1];
}
if (array[2].length<3){
array[2]=addStr[2-array[2].length]+array[2];
}
obj=array.join('.');
array=[];
if (obj.match(rule2))
{
return convertFormat(obj.match(rule2))
}else {
//msg+='输入格式不正确'
return '输出格式不正确';
alert(msg)
}
}else {
//msg+='无输入\n';
return '无输入';
}
function convertFormat(arr){
array[0]=o1[arr[1]];
array[1]=o2[arr[2].charAt(0)]+arr[3];
array[2]=arr[6];
return array.join('-');
}
}
alert(convert('1.12.4'))
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<script type="text/javascript">
<!--
// 用法:InputUtil.changeTo('0.01.1');
var InputUtil = (function(){
var date = new Date();
// 存放凭证字,用键值对应
var pzzMap = {"0":"RP","1":"PC","2":"PB","3":"记"}
// 存放年
var yearMap = {"0":date.getFullYear(),"1":(date.getFullYear() - 1)}
var splitChar = '-'; // 连接符
// 简单的格式化函数
// 如format(2,1) -> 01,format(3,12) -> 012
function format(len,input) {
var zeroCount = len - (input+'').length;
for(var i=0;i<zeroCount;i++) {
input = '0' + input;
}
return input;
} return {
changeTo:function(inputStr) {
var inputArr = inputStr.split('.'); var yearNo = inputArr[1].substring(0,1);
var month = inputArr[1].substring(1);
return [
pzzMap[inputArr[0]]
,(yearMap[yearNo] + format(2,month))
,format(3,inputArr[2])
].join(splitChar);
}
}})();// 回车事件
function enterHandler(e) {
var e = e || window.event;
var target = e.target || e.srcElement; // 获取input控件
if(e.keyCode == 13){
// 略去验证操作
// ...
var value = target.value; // 获取输入内容
// 转换
target.value = InputUtil.changeTo(value);
}
} //alert(InputUtil.changeTo('0.01.1'))
//alert(InputUtil.changeTo('3.03.198'))
//-->
</script>
</head> <body>
<input type="text" name="a" onkeypress="enterHandler()" > <br>
<input type="text" name="a" onkeypress="enterHandler()" > <br>
<input type="text" name="a" onkeypress="enterHandler()" > <br>
</body>
</html>
<script>
function fun(obj){
var arr=["RP","PC","PB","记"],ma,y = new Date().getFullYear();
if(ma=obj.value.match(/^([0123])\.([01])(\d{1,2})\.(\d{1,3})$/)){
obj.value = arr[ma[1]]+"-"+(y-ma[2])+("0"+ma[3]%13).slice(-2)+"-"+("00"+ma[4]).slice(-3);
}else{
obj.value="";alert("格式有误!");
}
}
</script> //ma[3]%13;//担心月份超出12
//("0"+?).slice(-2);//自动补0