【num增加】 工具

<html>
<head>
<style>
 body, table {
  font-size: 10pt;
 }
 textarea {
  width:100%;
  border:1 solid #6699cc;
 }
 .button {width:60px;}
 .author_blue {color:blue;}
 .author_black {color:black;}
</style>
<title></title>
<script type="text/javascript">

function setWindowSize(width, height){
 width = width || 1024;
 height = height || 768;
 window.moveTo(0, 0);
 window.resizeTo(width, height);
}

/*执行处理*/
function processRepeat(){
 var isCheckOk = false;
 isCheckOk = doCheck();
 
 if(!isCheckOk){
  return;
 }
 
 doRepeat();
}

/*校验取值范围*/
function doCheck(){
 var minVal = document.getElementById("minVal").value;
 var maxVal = document.getElementById("maxVal").value;
 
 if(isEmpty(minVal) || isEmpty(maxVal)){
  alert("范围不完整!");
  return false;
 }
 if(!isInt(minVal) || !isInt(maxVal)){
  alert("范围必须为有效数字!");
  return false;
 }
 return true;
}

//清空内容
function doClear(){
 document.getElementById("minVal").value = "";
 document.getElementById("maxVal").value = "";
 //document.getElementById("input").value = "";
 document.getElementById("output").value = "";
}

/*生成内容*/
function doRepeat(){
 var minVal = parseInt(document.getElementById("minVal").value);
 var maxVal = parseInt(document.getElementById("maxVal").value);
 
 var input = document.getElementById("input").value;
 var output = document.getElementById("output");
 
 var stringBuffer = "";
 //var reg = new RegExp("{num(\\+|-|\\*|/|%)?\\d*}", "g");
 var reg = new RegExp("{(\\s*\\d+\\s*(\\+|-|\\*|/|%)?\\s*)*\\s*num\\s*(\\s*(\\+|-|\\*|/|%)?\\s*\\d+\\s*)*}", "g");
 var exprArr = [];
 var expr = null;
 var evalResult = 0;
 var inputTmp = null;
 if(minVal <= maxVal){
  exprArr = input.match(reg);

 
if(exprArr != null){
   for(var i = minVal; i <= maxVal; i++){
    inputTmp = input;
    for(var j = 0; j < exprArr.length; j++){
     expr = exprArr[j].replace(/\s/g, ""); //去除空格
     expr = expr.substring(1, expr.length - 1); //去除大括号
     expr = expr.replace(/num/g, i); //将变量替换为实际值
     evalResult = parseInt(eval(expr)); //计算结果值
     inputTmp = inputTmp.replace(new RegExp(processRegSymbol(exprArr[j]), "g"), evalResult);
    }
    stringBuffer += inputTmp + "\n";
   }
  } else {
   for(var i = minVal; i <= maxVal; i++){
    stringBuffer += input + "\n";
   }
  }
 } else {
  exprArr = input.match(reg);
  if(exprArr != null){
   for(var i = minVal; i >= maxVal; i--){
    inputTmp = input;
    for(var j = 0; j < exprArr.length; j++){
     expr = exprArr[j].replace(/\s/g, ""); //去除空格
     expr = expr.substring(1, expr.length - 1); //去除大括号
     expr = expr.replace(/num/g, i); //将变量替换为实际值
     evalResult = parseInt(eval(expr)); //计算结果值
     inputTmp = inputTmp.replace(new RegExp(processRegSymbol(exprArr[j]), "g"), evalResult);
    }
    stringBuffer += inputTmp + "\n";
   }
  } else {
   for(var i = minVal; i <= maxVal; i++){
    stringBuffer += input + "\n";
   }
  }
 }
 output.value = stringBuffer;
}

function processRegSymbol(reg){
 if(isEmpty(reg)){
  return reg;
 }
 return reg.replace(/\+/g, "\\+").replace(/\*/g, "\\*");
}

function isNull(obj){
 if(typeof(obj) == "undefined" || obj == null){
  return true;
 }
 return false;
}

function isEmpty(str){
 if(isNull(str)){
  alert("String is null!");
  return true;
 }
 
 if(/\S/.test(str)){
  return false;
 }
 return true;
}

function isInt(num){
 if(isEmpty(num) || !/^-?[0-9]+$/g.test(num)){
  return false;
 }
 return true;
}

function shining(){
 document.getElementById("author").style.color = "red";
}

</script>

</head>
<body onLoad="">

<fieldset>
 <legend>参数设置</legend>
 <table style="margin:5;">
  <tr><td>变量名:</td><td>num</td></tr>
  <tr><td>取值范围:</td><td><input type="text" id="minVal" style="width:80;" maxLength="10" value="1">—<input type="text" id="maxVal" style="width:80;" maxLength="10" value="65"></td></tr>
  <tr><td colspan="2">
   <input type="button" class="button" value="确定" onClick="processRepeat()">
   <input type="button" class="button" value="清空" onClick="doClear()">
  </td></tr>
 </table>
</fieldset>
<br>
<table style="width:100%;">
 <tr><td>输入</td></tr>
 <tr><td><textarea id="input" style="height:200;">service-port {num} vlan {num} adsl 0/{num/32}/{num%32}</textarea></td></tr>
 <tr><td>&nbsp;</td></tr>
 <tr><td>输出</td></tr>
 <tr><td><textarea id="output" style="height:250;"></textarea></td></tr>
</table>

</body>
<br>
<label id="author" style="color:blue;">
作者:<br>
时间:2012年6月6日
</label>
</html>

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值