日期:2014-05-16  浏览次数:20485 次

正则问题
var tmp="<br><[^<>]*(up"+n+"){1}[^<>]*><[^<>]*>[^<>]*</a>";
window.document.getElementById("a").innerHTML=window.document.getElementById("a").innerHTML + "<br/><input type='file' name='file' id='up"+num+"'><a href='#' onClick='javascript:del("+num+");'>删除此控件
主要是这两行,我想加上中括号,换成:
window.document.getElementById("a").innerHTML=window.document.getElementById("a").innerHTML + "<br/><input type='file' name='file[]' id='up"+num+"'><a href='#' onClick='javascript:del("+num+");'>删除此控件
第一行该怎么改?
以下为参考

<input type="button" onClick="add();" value="添加控件">
<div id="a">

</div>
<script>
var num=0;
function add(){
alert(window.document.getElementById("a").innerHTML);
window.document.getElementById("a").innerHTML=window.document.getElementById("a").innerHTML + "<br/><input type='file' name='file' id='up"+num+"'><a href='#' onClick='javascript:del("+num+");'>删除此控件"+num+"</a>";  
num=num+1;
}
function del(n){
var str=window.document.getElementById("a").innerHTML;
str=str.toLowerCase();
var tmp="<br><[^<>]*(up"+n+"){1}[^<>]*><[^<>]*>[^<>]*</a>";
tmp=tmp.toLowerCase();
var regEx=new RegExp(tmp);
str=str.replace(regEx,"");
alert(str);
window.document.getElementById("a").innerHTML=str;
}
</script>


------解决方案--------------------
测试不出什么,我看那个正则的确是可以匹配任何非<和非>的字符0个或N个的,真是看不出,等人来吧,努力学习正则。
------解决方案--------------------
不用修改!
tmp= "<br><[^ <> ]*(up"+n+"){1}[^<>]*><[^<>]*>[^<>]*</a>"完全匹配修改后的模式。

里面解释:
<br><[^ <> ]*,要有<br><零个或多个除了<>的任意字符;

(up"+n+"){1}:一定要有一个up接着一个数值;

[^<>]*>零个或多个除了<>的任意字符后要有一个>;

<[^ <> ]*>:表示<>里面不能有<>

[^<>]*</a>:零个或多个除了<>的任意字符后要有一个</a>;