使用JavaScript,我需要帮助将变量连接到正则表达式

时间:2013-11-21 16:47:19

标签: javascript regex concatenation

我正在编写一个JavaScript函数来从显示在指定细分右侧的网址中提取细分。

例如,如果这是我的网址......

mysite.com/cat/12/dog/34?test=123

...我希望能够将'cat'传递给函数并获得12,然后将'dog'传递给函数并让它返回34.我在StackOverflow上找到了这个答案来提取URL段,但它使用字符串文字。而且我很难连接传入的值。

jQuery to parse our a part of a url path

这是我的代码。在这里,我不想将'cat'硬编码到模式匹配中,而是将'cat'传递给segmentName参数并使正则表达式匹配。

var url = "www.mysite.com/cat/12/dog/34?test=123";
alert(getNextSegmentAfterSegmentName(url, 'cat'));

function getNextSegmentAfterSegmentName(currentPath, segmentName) {
   var nextSegment = "";
   segmentName = segmentName.toLowerCase();
   //var currentPath = window.location.pathname.toLowerCase();
   if (currentPath.indexOf(segmentName) >= 0) {
      var path = currentPath.split('?')[0]; // Strip querystring

      // How do I concatenate segmentName into this?
      var matches = path.match(/\/cat\/([^\/]+)/);

      if (matches) {
         nextSegment = matches[1];
      }
   }
   return nextSegment;
}

这是一个jsfiddle示例: http://jsfiddle.net/Stormjack/2Ebsv/

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果要使用某个字符串变量创建正则表达式,则需要创建RegExp对象:

path.match(new RegExp("\/" + segmentName + "\/([^\/]+)"));