2010-10-14 23 views
1

我试图用HREF包装所有出现的IP地址,所以我可以然后做东西(tm)。正则表达式替换问题(主要是)字符串内容

我已经通过几个验证器运行了正则表达式本身,它与预期的匹配模式。因此,我认为我的问题在实施中,但我看不到正确的路径。任何人都可以帮忙吗?

这里的正则表达式和相关代码:

var theIps = new RegExp('^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$','g'); 
var newBody = jQuery('#ELEMENT').html(); 
var processed = newBody.replace(theIps, '<a class="ipPopup" href="javascript:void(0)" rel="10.5.1.2" onclick="addToWatchlist(this)">TESTING REGEX</a>'); 
jQuery('#ELEMENT').html(processed); 

预先感谢任何帮助......

回答

1

使用您正则表达式的正则表达式语法:

var theIps = /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/g; 

当您生成正则表达式对象从一个字符串,你必须加倍反斜杠。如果正则表达式是常量(即,您没有动态构建它),那么使用“本地”语法更容易。

+0

我刚刚在正则表达式之前编辑过'new' - 抱歉。 – Pointy 2010-10-14 21:07:45

+0

感谢您的及时回复 - 并修复我的帖子:-) – TRB 2010-10-14 21:14:18

+0

Grrr enter submits ...现在我知道了。所以我做了你所建议的改变(firefox在我删除'new'之前抱怨,现在已经解决了),但是我仍然得到和以前一样的输出,没有发生替换。替换不能按照我认为的方式工作,或者在代码中可以看到任何可以解释它的东西吗?再次感谢! – TRB 2010-10-14 21:16:10