我被正则弄的很郁闷...
功能需求是在js中使用字串的replace函数替换掉原网页中的部分内容:原html内容:
<tr>
<td width="470" height=25><img src="img/a.gif">
<a href=t_view.asp?id=11111 target="_blank">
<strong><font class=f14>这里是标题</font></strong></a></td>
<td width="80" align=right><font color=#000000>2009-5-23</font></td>
</tr>
替换后变为:
<tr>
<td width="470" height=25><img src="img/a.gif">
<a href=t_view.asp?id=11111 target="_blank">
<strong><font class=f14>这里是标题</font></strong>@@@@@2009-5-23</a></td>答案是:
content.replace(/<tr>[\s\S]*?(<a href=\S+.*?>.*?)<\/a>[\S\s]*?<td width="80" align=right>(.*?)<\/td>/ig,"$1@@@@@$2</a>");
content中包含了上面的原html代码。我的问题是:
1、上面答案中使用的正则能否详细解释下:如[\s\S]、*?之类的,还有在replace的第二个参数中$1和$2是怎么定义的。
2、感觉以前学的正则没怎么困难,a-zA-Z之类的,这里的怎么会这么难?有好的资料可以提高吗?Hug and KKKKKKiss~
功能需求是在js中使用字串的replace函数替换掉原网页中的部分内容:原html内容:
<tr>
<td width="470" height=25><img src="img/a.gif">
<a href=t_view.asp?id=11111 target="_blank">
<strong><font class=f14>这里是标题</font></strong></a></td>
<td width="80" align=right><font color=#000000>2009-5-23</font></td>
</tr>
替换后变为:
<tr>
<td width="470" height=25><img src="img/a.gif">
<a href=t_view.asp?id=11111 target="_blank">
<strong><font class=f14>这里是标题</font></strong>@@@@@2009-5-23</a></td>答案是:
content.replace(/<tr>[\s\S]*?(<a href=\S+.*?>.*?)<\/a>[\S\s]*?<td width="80" align=right>(.*?)<\/td>/ig,"$1@@@@@$2</a>");
content中包含了上面的原html代码。我的问题是:
1、上面答案中使用的正则能否详细解释下:如[\s\S]、*?之类的,还有在replace的第二个参数中$1和$2是怎么定义的。
2、感觉以前学的正则没怎么困难,a-zA-Z之类的,这里的怎么会这么难?有好的资料可以提高吗?Hug and KKKKKKiss~
第一个括号匹配的内内容就是$1,一次类推,$1@@@@@$2此处的目的是将两个括号的内容提出然后中间加入@@@@字符返回
具体可看我博客里面转贴的正则表达式的学习
正则表达式30分钟入门教程
http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm