在jQuery中拆分URL路径并获取其中的一部分

时间:2017-04-21 04:25:11

标签: javascript jquery arrays url split

我需要拆分用户输入的路径并仅抓取其中的某些部分。 对于例如如果使用输入路径为:

/content/mypath/myfolder/about/images/abc.jpg

然后我想只显示images/abc.jpg

我正在

  

未捕获错误:语法错误,无法识别的表达式

目前错误。

这是我的代码。



$(document).ready(function(){
  $('#getData').click(function(){
    imgPath = $('#imgPath').val();

    console.log($(imgPath).split('/'));

    //console.log(slicedPath);
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
Image path: <input type="text" id="imgPath">
<button id="getData">Click</button>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

$(imgPath)会尝试找到imgPath是选择器的元素。由于用户输入的路径不是正确的选择器,它将抛出错误。 例如,如果用户输入了/content/mypath/myfolder/about/images/abc.jpg,则选择器将是$('/content/mypath/myfolder/about/images/abc.jpg'),这是无效的,因此错误。

您可以使用RegEx获取图像路径

imgPath.match(/images\/.*$/i)[0]

正则表达式将匹配images/后跟任意数量的字符。 match返回一个数组,因此使用[0]将获取图像路径。

$(document).ready(function() {
  $('#getData').click(function() {
    var imgPath = $('#imgPath').val();

    console.log(imgPath.match(/images\/.*$/i)[0]);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
Image path: <input type="text" id="imgPath" value="/content/mypath/myfolder/about/images/abc.jpg">
<button id="getData">Click</button>

答案 1 :(得分:1)

我假设想要最后两个路径值。

$(document).ready(function(){
     $('#getData').click(function(){
     imgPath = $('#imgPath').val();

 var theArray = imgPath.split('/');  // split path into parts

 // take the last two indexes to form short path
 var shortPath = theArray[theArray.length - 2] + '/' + 
                 theArray[theArray.length - 1];


      });
});

答案 2 :(得分:-1)

您应该使用console.log(imgPath.split("/"))代替console.log($(imgPath).split("/"))

此处imgPath只是一个存储输入值的变量,而不是用作$(imgPath)的dom元素。