我使用正则表达式来匹配从一个textarea较窄一套TinyMCE的HTML的。 宽度过大,产生径流,所以我在做的JavaScript测试代码。
我的问题是,为什么$ 3中没有只匹配“1000像素”也table标签后的文档的其他部分相匹配?
<script language="javascript">
// change table width
function adjustTable(elem0,elem1) {
// debugging, place results in div
elem1.innerHTML = elem0.innerHTML.replace(/^(.*)(\u003Ctable.*?\s*?\w*?width\u003D[\u0022\u0027])(\d+px)([\u0022\u0027].*?\u003E)(.*)$/img,"$3");
}
</script>
<button type="button" onclick="adjustTable(document.getElementById('myTable'),document.getElementById('myResult'))">RegEx</button>
<div id="myTable">
<table width="1000px">
<thead>
<tr><th colspan="3">Table Header</th></tr>
</thead>
<tbody>
<tr><td>alpha</td><td>beta</td><td>gamma</td></tr>
</tbody>
</table>
</div>
<textarea id="myResult">
</textarea>
是的,我明白正则表达式和HTML是不应该越过流,因为HTML是复杂的,等我试图让HTML的子集打印。
我看不出它如何以多种方式相匹配。
下面是$ 3的结果。
1000px
<thead>
<tr><th colspan="3">Table Header</th></tr>
</thead>
<tbody>
<tr><td>alpha</td><td>beta</td><td>gamma</td></tr>
</tbody>
</table>
它匹配了1000像素,但随后有表标签,这是奇怪的后多余的东西,因为我觉得我是强迫在表标签匹配。 思考?