正規表現で範囲は向いていない。
要件
- 最大4ブロックの整数値によるバージョン表現をチェックしたい。
 - 各ブロックは
.で区切られる - 1ブロックの値は
0から65535まで - 0以外の数値の先頭に0をつけてはいけない(ex:
0123) - ブロック数は任意である
 - ただし、末尾は
.で終わってはいけない 
コード
var testcases = {
  ''                        : false,
  'test'                    : false,
  '0'                       : true,
  '1'                       : true,
  '1.0'                     : true,
  '1.0.0'                   : true,
  '1.0.0'                   : true,
  '1.0.0.0'                 : true,
  '1.0.0.0.'                : false,
  '1.0.0.0.0'               : false,
  '1.0.0.0.'                : false,
  '1..0.0.0'                : false,
  '01.2.3.4'                : false,
  '65535.65535.65535.65535' : true,
  '65536.65535.65535.65535' : false,
  '65535.65536.65535.65535' : false,
  '65535.65535.65536.65535' : false,
  '65535.65535.65535.65536' : false,
};
function tester(input) {
  if (!input.match(/^([1-9]\d{0,4}|0)(\.(([1-9]\d{0,4})|0)){0,3}$/)) {
    return false;
  }
  
  return input.split('.').every((value, index, array) => {
    return (Number(value) <= 65535);
  })
  
}
for (input in testcases) {
  console.log((tester(input) == testcases[input]));
}
先頭0の排除と0の両立がわからないのでかんたんな繰り返しと|0で逃げ。
65535の範囲も難しいので正規表現以外でキャストチェック。ここに穴があるかも。
参考…でもない
もっといいのがあれば