比如一个html页面,有tag标签:
<input type="text" name="text1" />
<input type="text" name="text2" />
<input type="text" name="text3" />
我现在想要用代码的方式吧这3个tag标签注释掉,就像这样:
<!--<input type="text" name="text1" />-->
<!--<input type="text" name="text2" />-->
<!--<input type="text" name="text3" />-->
因为页面还有其他标签,所以我不知道怎么匹配这3个标签同时将每个标签外面加注释符号,前面的好匹配,把<input type="text"替换成<!--<input type="text",但是他的结束符不知道怎么替换,如果将 />替换成 />-->的话,那么页面所有的 />都会被替换。也有想过用正则,用正则把<input type="text" />这一段匹配出来,替换的时候只要满足正则要求,都直接在外面加注释,但是也不知道怎么弄。
分数不多了,帮个忙!!!
已我用的notepad++为例子
替换 (<input type="text"[^>]*>)为<!--\1-->
能匹配到,但是怎么在外面加注释呢?
System.Text.RegularExpressions.Regex.Replace(strHTML, @"<input type="text"[^>]*>", "<!--" + @"<input type="text"[^>]*>" + "-->");
我这样写的,把strHTML里符合正则@"<ers:[^>]*>"的都在外面加个注释,但是为什么他把
"<!--" + @"<input type="text"[^>]*>" + "-->"
当成了替换后的字符串呢,我这样写,替换后页面就显示
<!--<input type="text"[^>]*>-->
我是要他显示这样:<!--<input type="text" name="text3" />-->
var ss = '<input type="text" name="text1" />'.replace(/(<input type="text" name="text[0-9]" \/>)/g,'<!--$1-->'); alert(ss); ss = '<input type="text" name="text2" />'.replace(/(<input type="text" name="text[0-9]" \/>)/g,'<!--$1-->'); alert(ss);
我写了个简单的列子 ,你直接放到html 试试看。
我用js写的代码
var str = "<input type=\"text\" name=\"text1\" /> "; var regx = /(<input\s+type\s*=\s*"text"\s+name\s*=\s*"[^"]*"\s*\/>)/g; var result = str.replace(regx,"<!--"+"$1"+"-->");
正则表达式那一部分肯定一样,具体使用c#里面那个方法这个我没用过,你自己查一下吧!
string result=Regex.Replace(yourHtml,@"(<input.*?type="text".*?/>)","<!--$1-->");