我把代码都发上来算了.
<html>
<head>
<style>
span{margin:0}
</style>
<script language="javascript">
function dosix(str){
var re=new RegExp();
re=str;
if(re.search(/([0-9]{1}|([0-4][0-9]){1})(\.[0-9]{1}|([0-4][0-9]){1})*(\*\d){1}/)==-1) {alert("输入错误");return false;}
bs=re.match(/(\d*)$/g)[0]
re=re.replace(/\*{1}\d*/,"").split(".")
for(i=0;i<re.length;i++){
if(document.getElementById("no"+re[i]).innerText==""){
document.getElementById("no"+re[i]).innerText=bs
}else{
document.getElementById("no"+re[i]).innerText+="+"+bs
}
}
document.all.inp1.value=""
}
</script>
</head>
<body onLoad="document.all.inp1.focus()">
<div>
<form onSubmit="dosix(document.all.inp1.value);return false;" style="margin:0">
输入:<input id=inp1 type="text" size="60" value="1.3.7.49.26.29.30.22.21*10"><br />
<button>准备打印</button>
</form>
</div>
<table width="100%" border="1" cellpadding="0" cellspacing="0" bordercolor="#000000">
  <tr>
<td width="2%">1</td>
<td width="48%"><span id=no1></span></td>
<td width="2%">26</td>
<td width="48%"><span id=no26></span></td>
  </tr>
  <tr>
<td>2</td>
<td><span id=no2></span></td>
<td>27</td>
<td><span id=no27></span></td>
  </tr>
  <tr>
<td>3</td>
<td><span id=no3></span></td>
<td>28</td>
<td><span id=no28></span></td>
  </tr>
  <tr>
<td>4</td>
<td><span id=no4></span></td>
<td>29</td>
<td><span id=no29></span></td>
  </tr>
  <tr>
<td>5</td>
<td><span id=no5></span></td>
<td>30</td>
<td><span id=no30></span></td>
  </tr>
  <tr>
<td>6</td>
<td><span id=no6></span></td>
<td>31</td>
<td><span id=no31></span></td>
  </tr>
  <tr>
<td>7</td>
<td><span id=no7></span></td>
<td>32</td>
<td><span id=no32></span></td>
  </tr>
  <tr>
<td>8</td>
<td><span id=no8></span></td>
<td>33</td>
<td><span id=no33></span></td>
  </tr>
  <tr>
<td>9</td>
<td><span id=no9></span></td>
<td>34</td>
<td><span id=no34></span></td>
  </tr>
  <tr>
<td>10</td>
<td><span id=no10></span></td>
<td>35</td>
<td><span id=no35></span></td>
  </tr>
  <tr>
<td>11</td>
<td><span id=no11></span></td>
<td>36</td>
<td><span id=no36></span></td>
  </tr>
  <tr>
<td>12</td>
<td><span id=no12></span></td>
<td>37</td>
<td><span id=no37></span></td>
  </tr>
  <tr>
<td>13</td>
<td><span id=no13></span></td>
<td>38</td>
<td><span id=no38></span></td>
  </tr>
  <tr>
<td>14</td>
<td><span id=no14></span></td>
<td>39</td>
<td><span id=no39></span></td>
  </tr>
  <tr>
<td>15</td>
<td><span id=no15></span></td>
<td>40</td>
<td><span id=no40></span></td>
  </tr>
  <tr>
<td>16</td>
<td><span id=no16></span></td>
<td>41</td>
<td><span id=no41></span></td>
  </tr>
  <tr>
<td>17</td>
<td><span id=no17></span></td>
<td>42</td>
<td><span id=no42></span></td>
  </tr>
  <tr>
<td>18</td>
<td><span id=no18></span></td>
<td>43</td>
<td><span id=no43></span></td>
  </tr>
  <tr>
<td>19</td>
<td><span id=no19></span></td>
<td>44</td>
<td><span id=no44></span></td>
  </tr>
  <tr>
<td>20</td>
<td><span id=no20></span></td>
<td>45</td>
<td><span id=no45></span></td>
  </tr>
  <tr>
<td>21</td>
<td><span id=no21></span></td>
<td>46</td>
<td><span id=no46></span></td>
  </tr>
  <tr>
<td>22</td>
<td><span id=no22></span></td>
<td>47</td>
<td><span id=no47></span></td>
  </tr>
  <tr>
<td>23</td>
<td><span id=no23></span></td>
<td>48</td>
<td><span id=no48></span></td>
  </tr>
  <tr>
<td>24</td>
<td><span id=no24></span></td>
<td>49</td>
<td><span id=no49></span></td>
  </tr>
  <tr>
<td>25</td>
<td><span id=no25></span></td>
<td>50</td>
<td><span id=no50></span></td>
  </tr>
</table>
</body>
</html>

解决方案 »

  1.   

    /(\d{1}|[0-4]{1}\d{1})(\.(\d{1}|[0-4]{1}\d{1}))*(\*\d)/
    如果用string.match()的话,能匹配1.23.3.49*22,不能匹配1.23.3.59*22,但是我不知道为什么还会匹配1,.49,49,*2这四项,如果/(\d{1}|[0-4]{1}\d{1})(\.(\d{1}|[0-4]{1}\d{1}))*(\*\d)/g就只会匹配1.23.3.49*22晕了,我也是正则新手,等待高手来答疑.
      

  2.   

    你的表达式是错误的如下:
    /[0-49]+(\.[0-49])*(\*\d){1}/ 正则会这么理解如下:   
    可以匹配:0.12*22
    可以匹配:0.12.34*22
    可以匹配:0*22  这个最重要,也就是说:(\.[0-49])* 可以匹配零次或多次
    所以:1.23.3.59*22 匹配 /[0-49]+(\.[0-49])*(\*\d){1}/  等于true
    所以:1*22 匹配 /[0-49]+(\.[0-49])*(\*\d){1}/          等于true
    希望楼主能明白我的意思!!!!!!!!!!!!!!!
      

  3.   

    /[0-49]+(\.[0-49])\*\d+/test测试通过
      

  4.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>无标题页</title>
    </head>
    <body>
    <script>
    var a=/^((\d|[1-4][0-9])\.){3}(\d|[1-4][0-9])\*(\d|[1-4][0-9])$/gi;
    var str="1.23.3.49*22";
    alert(a.test(str));
    </script>
    </body>
    </html>
      

  5.   

    其实我自己都搞混了...为什么1.23.3.49*22会false?我期望的结果是true啊...
    能解释一下你的正则么?
      

  6.   

    没有false 啊 我弹出显示是true啊
    就是 匹配以个一位数和 一个不以0开头的 两位数字
    其中不大于49 
      

  7.   


    9*22 对 /[0-49]+(\.[0-49])*(\*\d){1}/ 是会匹配成功的,因此/[0-49]+(\.[0-49])*(\*\d){1}/.test("1.23.3.49*22") 结果肯定是true
      

  8.   

    你的\d后面留着空格干什么?去掉就ok了,呵呵
      

  9.   

    说真的,我晕死,我这边都弹false...
    我是复制你的代码的,什么都没做修改直接运行就是false.
    不过你贴的代码里|好像用的是中文符号?我改成英文的,依然false...
      

  10.   

    呃...这个...抱歉各位,本来都快结贴了..怎么突然发现这个正则只能匹配4个元素,多于4个或者少于4个都是false.(难怪一开始我看到{3}就怎么都想不通为什么会有个3,我没说过要限制元素数目的啊.)按要求最少一个a*n的形式,最多可以限制为49,这点不是很重要,毕竟超出49的情况很少出现.
    再麻烦大家想想啦.谢谢
      

  11.   

    你看这是你想要的吗,如下:
    var reg = /^((\d|[1-4][0-9])\.)+(\d|[1-4][0-9])\*(\d|[1-4][0-9])$/gi; 
    var str = "1.23.3.49.49*22";
    document.write(reg.test(str));  //测试返回true
      

  12.   

    7788了.~最后使用的是
    /^(([1-9]|[1-4][0-9])\.)*([1-9]|[1-4][0-9])\*\d+$/gi
    顺便问问,红色部分如果我想匹配的是非0开头的任意数字,能怎么改么?再次谢谢大家~