正则判断版本号(如:1.2.3或1.2.3.4):/^([1-9]\d|[1-9])(.([1-9]\d|\d)){2,3}$/
不允许出现 0.x.x;01.x.x; x.0x.x; x.00.x; x.x.00; x.x.0x
/*
* 版本号比较方法
* 传入两个字符串,当前版本号:curV;比较版本号:reqV
* 调用方法举例:compare("1.1","1.2"),将返回false
*/
function compare(curV, reqV) {
if (curV && reqV) {
//将两个版本号拆成数字
var arr1 = curV.split('.'),
arr2 = reqV.split('.');
var minLength = Math.min(arr1.length, arr2.length),
position = 0,
diff = 0;
//依次比较版本号每一位大小,当对比得出结果后跳出循环(后文有简单介绍)
while (position < minLength && ((diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0)) {
position++;
}
diff = (diff != 0) ? diff : (arr1.length - arr2.length);
//若curV大于reqV,则返回true
return diff > 0;
} else {
//输入为空
console.log("版本号不能为空");
return false;
}
}
中间的while循环等价于:
while(position < minLength) {
diff = parseInt(arr1[position]) - parseInt(arr2[position]);
if(diff != 0) {
break;
}
position++;
}