2011-07-26 36 views
0

我试图做一个查找和替换使用正则表达式,并抓住第一个(只在这种情况下)反向引用作为一个变量。如何在JavaScript正则表达式中使用反向引用?

var RegexSearchString = "/((?:^(?:https?://|www\\d{0,3}[.])(?:.*?/)|(?:[a-z0-9.\\-]+[.][a-z]{2,4}/))(?:.*?/))/"; 
var test = "http://foo.bar.net/interestingbit/lots/of/other/stuff/here"; 
alert(test); 
test.replace(umassURLRegexSearchString, "$1"); 
alert(test); 

预期的结果应该是一个警报: http://foo.bar.net/interestingbit/lots/of/other/stuff/here

接着一个警报: http://foo.bar.net/interestingbit/

两个警报包含测试变量的值作为第一初始化。任何想法,这是哪里崩溃?

回答

0

您需要:

  1. 新捕获组
  2. 分配前添加一个新的捕获组的路径上从静止
  3. 此举结束括号在你的正则表达式分开第一文件夹正则表达式的结果返回给测试
  4. 退出所有的/字符在您的正则

用的代码这些变化的LL是:

var RegexSearchString = /^((?:(?:https?:\/\/|www\d{0,3}[.])(?:.*?\/)|(?:[a-z0-9.\-]+[.][a-z]{2,4}\/))(?:.*?\/))(?:.*?\/)*/; 
var test = "http://foo.bar.net/interestingbit/lots/of/other/stuff/here/"; 
alert(test); 
test = test.replace(RegexSearchString, "$1"); 
alert(test); 

看看这里:http://jsfiddle.net/jheHR/1/

+0

这并不为我工作。它最终捕获更多的URL。 根据该链接原帖子中的正则表达式应该没问题,但我无法引用它看起来的捕获组 –

+0

对不起,我检查了它并发现需要进行的一些更改 –

+0

事情现在正在完美运行。谢谢你的帮助! –

相关问题