“undefined"从regex执行的值

"undefined" values from regex exec

本文关键字:regex 执行 undefined quot      更新时间:2023-09-26

我是乞丐。我想把搜索字符串(regex + exec)的索引按下"RUN"按钮后进入数组。我沉思着,推着。我有问题在while循环-可能是因为闭包。我得到array [undefine, undefined.....]。字符串取自textarea.value

查看JSFiddle代码http://jsfiddle.net/andre81/eXrQq/8/

function TrimReport () {
    'use strict';
        var ReportTxt = document.getElementById('RaportInput');
        var Str = ReportTxt.value;  
        var re = /'<tr'>/gmi;
        var result = [];
        var val;        
        var match;
        var div = document.getElementById('output');
        while (match = re.exec(Str)) {
            val =  match.index; 
            result.push(val.lastIndex);
            div.innerHTML = div.innerHTML + val + '<br>';
            //console.log(match.index);
        };
        div.innerHTML = div.innerHTML + result + '<br>';
        //console.log(result);
};

//Initial function:
function init() {
    'use strict';
      if(document && document.getElementById) {
            var bttn = document.getElementById('RUN');
            bttn.onclick = TrimReport;
      } //if end
    //alert('inside init');
    //console.log('inside init');
}//init end
window.onload = init;
HTML代码:

  <div id="input">
    <textarea cols="160" rows="18" id="RaportInput">
 <!-- IMPORTED CONTENT inside TEXTAREA -->       
<p><center><h1>  Revit Coordination Report  </h1></center></p>
<p><center><h2>  In a linked project  </h2></center></p>
<p><table border=on>  <tr>  <td>  New/Unresolved  </td>  <td>  Floor opening cut  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG06 : Floor opening cut : Opening Cut : id 1060252  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floor opening cut  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG06 : Floor opening cut : Opening Cut : id 1060259  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floor opening cut  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG06 : Floor opening cut : Opening Cut : id 1061236  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floor opening cut  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG11 : Floor opening cut : Opening Cut : id 1549469  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG11 : Floors : Floor : h=28cm : id 1549457  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Maintain Floor elevations  </td>  <td>  Floor elevation changed  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : RVT_Links : Floors : Floor : h=28cm : id 2367719  <br>  SEG08 : Floors : Floor : h=28cm : id 332807  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Maintain Floor elevations  </td>  <td>  Floor elevation changed  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : RVT_Links : Floors : Floor : h=28cm : id 2378060  <br>  SEG04 : Floors : Floor : h=28cm : id 997351  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Monitor Floor Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : RVT_Links : Floors : Floor : h=28cm : id 2378060  <br>  SEG04 : Floors : Floor : h=28cm : id 997351  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Monitor Floor Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : External_Walls : Floors : Floor : h=28cm : id 2723982  <br>  SEG13 : Floors : Floor : h=28cm : id 1775643  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Monitor new Floor openings  </td>  <td>  New Openings Detected in 'Floor : h=28cm'  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : RVT_Links : Floors : Floor : h=28cm : id 2378060  <br>  SEG04 : Floors : Floor : h=28cm : id 997351  <br>  SEG04 : Floor opening cut : Opening Cut : id 1808079  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Floors  </td>  <td>  Monitor new Floor openings  </td>  <td>  New Openings Detected in 'Floor : h=28cm'  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : External_Walls : Floors : Floor : h=28cm : id 2723982  <br>  SEG13 : Floors : Floor : h=28cm : id 1775643  <br>  P1218_WOOD_ARCHITEKTURA.rvt : Shafts : Shaft Openings : Opening Cut : id 1203484  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : RVT_Links : Walls : Basic Wall : konstrukcja_wall box section_400 : id 2356962  <br>  : (Deleted element ) : id = 1597600  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG10 : Walls : Basic Wall : Sc-300mm : id 1761197  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG13 : Walls : Basic Wall : Sc-300mm : id 1773182  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG13 : Walls : Basic Wall : Sc-250mm : id 1773190  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Check whether an Element exists  </td>  <td>  Element deleted  </td>  <td>  : (Deleted element ) : id = -1  <br>  SEG13 : Walls : Basic Wall : Sc-250mm : id 1773202  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Maintain wall elevation/height  </td>  <td>  Wall Elevations are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Structural_Walls : Walls : Basic Wall : konstrukcja_sc_300 : id 1834524  <br>  SEG04 : Walls : Basic Wall : Sc-300mm : id 996843  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_300 : id 2643467  <br>  SEG06 : Walls : Basic Wall : Sc-300mm : id 1650596  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643508  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1656518  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643510  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657659  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643511  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657688  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketch is missing  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643512  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657947  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketch is missing  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643513  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657965  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643514  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657979  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643515  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657989  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643516  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1657999  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketch is missing  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643517  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1658013  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketch is missing  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2643518  <br>  SEG06 : Walls : Basic Wall : Sc-250mm : id 1658027  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketch is missing  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : Internal_Walls : Walls : Basic Wall : konstrukcja_sc_300 : id 2643611  <br>  SEG10 : Walls : Basic Wall : Sc-300mm : id 1760438  </td>  <td>    </td>  </tr>
<tr>  <td>  New/Unresolved  </td>  <td>  Walls  </td>  <td>  Monitor Wall Sketches  </td>  <td>  Sketches are different  </td>  <td>  P1218_WOOD_ARCHITEKTURA.rvt : External_Walls : Walls : Basic Wall : konstrukcja_sc_250 : id 2723649  <br>  SEG13 : Walls : Basic Wall : Sc-250mm : id 1727350  </td>  <td>    </td>  </tr>
</table>
    </textarea>
  </div>
<button type="button" id="RUN">RUN</button>
    <div id="output"></div>

您的while循环中存在多个相关错误。请参阅RegExp.exec()函数的文档,了解如何正确使用它。最直接的错误是:

  1. val是一个整数(即"从0开始的字符串匹配索引"),而不是一个对象。
  2. lastIndex属性实际上属于re对象。

请参阅我上面提供的链接,以获得如何正确循环的示例

在body标签之前使用下面的脚本/使用Dom Ready

Demo: JS Fiddle Link

以上技术避免Dom Ready方法,这会提高性能。

<script type="text/javascript">
/ * You code */
</script>
</body>

谢谢你的帮助。我已经改变:

 result.push(val.lastIndex);

:

result.push(val);

inside while循环。它似乎工作得很好,但我仍然不满意我的知识。我把更正后的代码放在这里:JSFiddle

@Venkat这个脚本的预期输出是采用这个HTML表:JSFiddle并根据COLUMNS的类别和ID对其进行切片,并将它们放入ARRAYS中。例如:

[Floors, Monitor Floor Sketches, [id 1775643, id 997351,  id 1652983, .....]]    
[Floors, Monitor new Floor openings , [ id 997351, id 997351,  id 1652343, .....]]  
[Walls, Maintain wall position , [ id 997351, id 997351,  id 1652978, .....]]  

等....

[类别,类别,[id, id, id 3…]]

唯一的事情-我不会在这些数组中添加"id"前缀。所有这些数组,我将使用在Revit软件的元素选择ID -写在YouTube