我是这样写的,不过好像不对???
var text1 = "类别:高速ID:01名称:一零七;类别:国道ID:02名称:长益高速;类别:省道ID:03名称:长潭公路;";
var re = (\s*)(类别\:)\s*(?<type>\w*)\s* (ID\:)\s*(?<id>\w*)\s* (名称\:)\s*(?<name>\w*)\s*;
var resultArray = text1.match(re);
alert(resultArray.toString());

解决方案 »

  1.   

    try:<script language="JavaScript">
    <!--
    var str="类别:高速ID:01名称:一零七;类别:国道ID:02名称:长益高速;类别:省道ID:03名称:长潭公路;"
    var re=/类别:(.*?)ID:(.*?)名称:(.*?);/g
    var a=str.match(re)
    var b=[]
    if(a){
    for(i=0;i<a.length;i++){
    aa=a[i].match(re)
    if(aa)b[i]=new Array(RegExp.$1,RegExp.$2,RegExp.$3)
    }
    }
    alert(b.join("\n"))
    //-->
    </script>
      

  2.   

    能不能解释一下b.join("\n")是什么意思?
    b=[]  是不是就是定义一个静态数组?
      

  3.   

    谢谢!不过,我想要把它放到一个二维数组里面,以便于我把得到的值放到一个select框里面,ID为value,名称放到text里面!
    基本叶面如下(不大会写,麻烦了!):<html>
    <head>
    <script language="javascript">
    <!--
    //二级联动菜单(道路)
    function RoadSelect()
    {
    var str="类别:高速ID:01名称:一零七;类别:国道ID:02名称:长益高速;类别:省道ID:03名称:长潭公路;"
    var re=/类别:(.*?)ID:(.*?)名称:(.*?);/g
    var a=str.match(re)
    var b=[]
    if(a){
    for(i=0;i<a.length;i++){
    aa=a[i].match(re)
    if(aa)b[i]=new Array(RegExp.$1,RegExp.$2,RegExp.$3)
    }
    }
    alert(b.join("\n"))var i;
    for (i = 0; i < 这里不知道该怎么填?一共有多少行不知道?i++) {
    document.form1.selectRoad.options = b[i][1];
    document.form1.selectRoad.value = b[i][2];
    }
    }
    </script>
    </head>
    <body>
    <input id="BtnAdd" onclick="RoadSelect();" type="button" value="添 加" name="BtnAdd">
    <select class="inputred" name="selectRoad">
    <option selected></option>
    </select>
    </body>
    </html>