版本号示例
6.1.1
^8.3.5
~4.5.0
^4.0.0-beta.3
方法一
const str = '^1.0.0-alpha.1'
const str2 = '^1.0.1-alpha.1'
function compare(v1, v2) {
if (v1 === v2) {
return 0
}
const arr1 = v1.split(/\D/)
const arr2 = v2.split(/\D/)
for (let i = 0; i < arr1.length;) {
if (arr1[i] - arr2[i] > 0){
return 1
}
if (arr1[i] - arr2[i] < 0) {
return -1
}
if (arr1[i] === arr2[i]) {
i ++
}
}
}
方法二
const str = '^1.0.0'
const str2 = '^1.0.1'
function compare(v1, v2) {
if (v1 === v2) {
return 0
}
const toNum = (version) => {
version = version.toString()
const versionArr = version.split(/\D/)
const NUM_FILL = ['0000', '000', '00', '0', '']
for (let i = 0; i < versionArr.length; i++) {
const len = versionArr[i].length
versionArr[i] = NUM_FILL[len] + versionArr[i]
}
return parseInt(versionArr.join(''))
}
v1 = toNum(v1)
v2 = toNum(v2)
if (v1 > v2) {
return 1
}
if (v1 < v2) {
return -1
}
}