console
/** 批量转码验证 */
function testModel(){
//var models = ['ST2303B/S-B','ST2303B/S','ST2303B/S V2.0 W','ST2303B/S V2.0 E','ST2303B/S V2.0 W-M','ST2303B/S V2.0 E-M','ST2303B/S V3.0 W-M','ST2303B/S-ME','ST2303B/S W-XM'];
var models = ['ST2303B/S-B','ST2303B/S','ST2303B/S W','ST2303B/S V2.0W','ST2303B/S V2.0E','ST2303B/S V2.0E-E','ST2303B/S V2.0W-M','ST2303B/S V2.0W-G','ST2303B/S V2.0E-X','ST2303B/S V2.0T-Y','ST2303B/S V3.0W-M','ST2303B/S -M-E','ST2303B/S V2.0-M-E','ST2303B/S V2.0-G-E','ST2303B/S V3.0E-XM-E','ST2303B/S V3.0Q-Y-E','ST2303B/S W-XM','ST2303B/S V2.0W-XY-E','ST2303B/S V3.0W-MY-E','ST2303B/S V3.0W-XMY-E','ST2303B/S V2.0W-HMY','ST2303B/S V2.0W-MY','ST2303B/S V3.0E-E0','ST2303B/S V3.0E-XY','ST2303B/S V4.0-EP-M9+'];
_alt = "";
for(var idx in models) {
var val = models[idx];
_alt += '\n<br>'+val+' \t ';
var newVal = replaceModel2(val);
_alt += newVal?newVal:'(不符合规范)';
}
var result = document.getElementById('result');
result.innerHTML = _alt;
}
function $(id){
return document.getElementById(id);
}
/** 初步验证测试 */
function checkModel(){
var val = document.getElementById('model').value;
//var val = $('#model').val();
/*
普通(铁) ST2303B/S V1.0
普通 ST2303B/S V2.0
夜视 ST2303B/S V2.1
声光告警 ST2303B/S V3.2
测温、微气象、主副机 ST2303B/S V3.4
云台 ST2303B/S V3.8
*/
val = val.replace('ST2303B/S','');
var is_empty = val.length == 0;
_alt = '规范:';
_val23 = /^\s{1}V[2|3]\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A])*(-[a-z]{2})*$/.test(val);
_val4 = /^\s{1}V4\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A|0]{2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
_alt += '\t'+((_val23 || _val4 || is_empty)?'符合':'不符合');
// 普通(铁) ST2303B/S V1.0
_v0 = /^\s{1}[E|W|T|Q]*-[B]{1,}$/.test(val);
_alt += '\n普通(铁):\t'+(_v0?'是':'否');
// 夜视 ST2303B/S 2.1
_v1 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}(-.{1,4})*-.{0,3}[E]+$/.test(val);
_alt += '\n夜视:\t'+(_v1?'是':'否');
// 声光告警 ST2303B/S v3.2
_v2 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-.{0,3}[M]$/.test(val);
_alt += '\n声光告警:\t'+(_v2?'是':'否');
// 夜视+声光告警 ST2303B/S v3.3
_v3 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,}-.{0,3}[E|M]{1,2}(-.{0,1}[E]{1,})+$/.test(val);
_alt += '\n夜视+声光告警:\t'+(_v3?'是':'否');
// 测温、微气象、主副机 3.4
_v4 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[H|X|Q]{1,3}|.{0,3}[H|G|Q]{1,3})$/.test(val);
_alt += '\n测温、微气象、主副机:\t'+(_v4?'是':'否');
// 云台 ST2303B/S V3.8
_v8 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-Y$/.test(val);
_alt += '\n 云台:\t'+(_v8?'是':'否');
alert(_alt);
}
/** 转码验证 */
function testModel2(){
var val = document.getElementById('model2').value;
var _alt = replaceModel2(val);
var result = document.getElementById('result');
result.innerHTML = _alt;
}
/** 标识新命名规则 */
var Def_MODEL = [
{'ver':'.0','name':'普通设备:ST2303B/S V2.0'},
{'ver':'.1','name':'夜视:ST2303B/S V3.1'},
{'ver':'.2','name':'声光告警:ST2303B/S V3.2'},
{'ver':'.3','name':'夜视+声光告警:ST2303B/S V3.3'},
{'ver':'.4','name':'测温、微气象、主副机: ST2303B/S V3.4'},
{'ver':'.5','name':'普通设备'},
{'ver':'.6','name':'声光告警+测温、微气象、主副机: ST2303B/S V3.6'},
{'ver':'.7','name':'普通设备'},
{'ver':'.8','name':'云台'},
{'ver':'.9','name':'夜视+云台'},
{'ver':'.A','name':'声光告警+云台'},
{'ver':'.B','name':'夜视+声光告警+云台'},
{'ver':'.C','name':'测温、微气象、主副机+云台'},
{'ver':'.D','name':'夜视+测温、微气象、主副机+云台'},
{'ver':'.E','name':'声光告警+测温、微气象、主副机+云台'},
{'ver':'.F','name':'普通设备'}
];
/** 装置型号转码
* @param 原编码 型号
* @return {String} 新编码
*/
function replaceModel(val){
val = val.replace('ST2303B/S','');
var version = '2';
if(val.length>2) {
version = val.substring(1,3);
}
//_val = /^(\s{1}(V[2|3]\.0)+[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A]{1})*)|(\s{1}(V4\.0)+[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A|0]{1,2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*)$/.test(val);
_val23 = /^\s{1}V[2|3]\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A])*(-[a-z]{2})*$/.test(val);
_val4 = /^\s{1}V4\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A|0]{2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_val23 || _val4){
// 测温、微气象、主副机+云台 3.12 C
var _v12 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-((.{0,2}[H|X|Q]{1,2}[Y]|.{0,2}[Y][H|X|Q]{1,2}|.{0,2}[H|G|Q]{1,2}[Y]|.{0,2}[Y][H|G|Q]{1,2}))/.test(val);
if(_v12){
return version + Def_MODEL[12]['ver'];
}
// 夜视+声光告警+云台 3.11 B
var _v11 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,2}[M|Y]{2}|[M|Y]{2}.{0,2})-([E]|[P|A][E]|[E][P|0)]){1,2}/.test(val);
if(_v11){
return version + Def_MODEL[11]['ver'];
}
// 声光告警+云台 3.10
var _v10 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,2}[M|Y]{2}|[M|Y]{2}.{0,2})/.test(val);
if(_v10){
return version + Def_MODEL[10]['ver'];
}
// 夜视+云台 3.9
var _v9 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-[Y]-([E]|[P|A][E]|[E][P|0)]){1,2}$/.test(val);
if(_v9){
return version + Def_MODEL[9]['ver'];
}
// 夜视+声光告警+测温、微气象、主副机 3.7
var _v7 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,2}[H|X|Q]{1,2}[M]|.{0,2}[M][H|X|Q]{1,2}|.{0,2}[H|G|Q]{1,2}[M]|.{0,2}[M][H|G|Q]{1,2})-([E]|[P|A][E]|[E][P|0)])+$/.test(val);
if(_v7){
return version + Def_MODEL[7]['ver'];
}
// 声光告警+测温、微气象、主副机 3.6
var _v6 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,2}[H|X|Q]{1,2}[M]|.{0,2}[M][H|X|Q]{1,2}|.{0,2}[H|G|Q]{1,2}[M]|.{0,2}[M][H|G|Q]{1,2})$/.test(val);
if(_v6){
return version + Def_MODEL[6]['ver'];
}
// 夜视+测温、微气象、主副机 3.5
var _v5 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[H|X|Q]{1,2}|[H|X|Q]{1,2}.{0,3}|.{0,3}[H|G|Q]{1,2}|[H|G|Q]{1,2}.{0,3})-([E]|[P|A][E]|[E][P|0)])+$/.test(val);
if(_v5){
return version + Def_MODEL[5]['ver'];
}
// 夜视+声光告警 ST2303B/S v3.3
var _v3 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-.{0,3}[E|M]{1,2}-([E]|[P|A][E]|[E][P|0)])+$/.test(val);
if(_v3){
return version + Def_MODEL[3]['ver'];
}
///////////基础类型
// 测温、微气象、主副机 3.4
var _v4 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[H|X|Q]{1,3}|.{0,3}[H|G|Q]{1,3})$/.test(val);
if(_v4){
return version + Def_MODEL[4]['ver'];
}
// 声光告警 ST2303B/S v3.2
var _v2 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-.{0,3}[M]$/.test(val);
if(_v2){
return version + Def_MODEL[2]['ver'];
}
// 夜视 ST2303B/S 2.1
_v1 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-[E]|[P|A][E]|[E][P|0]+$/.test(val);
if(_v1){
return version + Def_MODEL[1]['ver'];
}
// 云台 ST2303B/S V3.8
var _v8 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-Y$/.test(val);
if(_v8){
return version + Def_MODEL[8]['ver'];
}
return version + Def_MODEL[0]['ver']
//return ',符合规范,未查处符合类型';
} else {
if('-B' == val){//铁壳
return '1.0';//'ST2303B/S V1.0';
}
else if(val.length == 0) {
return version + Def_MODEL[0]['ver'];
}
return ',不符合规范';
}
}
/**装置型号转码
* @param {String} _model 原编码 型号
* @return {String} 新编码
*/
function replaceModel2(_model){
var val = _model.replace('ST2303B/S','');
var version = 'ST2303B/S V2';
if(val.length>2) {
version = 'ST2303B/S '+val.substring(1,3);
}
var _val23 = /^\s{1}V[2|3]\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A])*(-[a-z]{2})*$/.test(val);
var _val4 = /^\s{1}V4\.0[E|W|T|Q]{0,1}(-[B|F|I|J|H|X|G|M|N|Q|Y|S]{1,4})*(-[P|E|A|0]{2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_val23 || _val4){
var _num = 0;
///////////基础类型
// 云台 ST2303B/S V3.8
var _v8 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[Y].{0,3})(-[P|E|A|0]{1,2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_v8){
_num += 8;
//$('msg').innerHTML = $('msg').innerHTML+'<br>'+_model+':8';
}
// 测温、微气象、主副机 3.4
var _v4 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[H|G|X|Q]{1,3}.{0,3})(-[P|E|A|0]{1,2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_v4){
_num += 4;
//$('msg').innerHTML = $('msg').innerHTML+'<br>'+_model+':4';
}
// 声光告警 ST2303B/S v3.2
var _v2 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}-(.{0,3}[M].{0,3})(-[P|E|A|0]{1,2})*(-[a-z]{2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_v2){
_num += 2;
//$('msg').innerHTML = $('msg').innerHTML+'<br>'+_model+':2';
}
// 夜视 ST2303B/S 2.1
var _v1 = /^\s{1}V[2-4]\.0[E|W|T|Q]{0,1}(-.{1,4})*-(.{0,1}[E].{0,1})+(-[a-z]{1,2})*(-(?:M9|M9\+|M12|MG1))*$/.test(val);
if(_v1){
_num += 1;
//$('msg').innerHTML = $('msg').innerHTML+'<br>'+_model+':1';
}
return version +'.'+ _num.toString(16).toUpperCase();
} else {
if('-B' == val){//铁壳
return 'ST2303B/S V1.0';//'ST2303B/S V1.0';
}
else if(val.length == 0) {
return version + '.0';
}
return null;
}
}
<input style="width:220px" id="model" value="ST2303B/S V2.0W-P0-M9"/> <button onclick="checkModel()"> 验证 </button><br>
<input style="width:220px" id="model2" value="ST2303B/S V2.0-MY-E"/> <button onclick="testModel2()"> 验证 </button><br>
<button onclick="testModel()"> 批量验证 </button><br>
提示框:
<div id="msg" style="border:1px solid #0f0;background-color:white;"> </div>
<div id="result" style="border:1px solid #0ff;background-color:white;"> </div>